#! #! 服务.gisgraphy.com 地理编码 地理编码?#--DestDataset_Mitab C:\Support\c59667--地址10 郊区 DES anonciades # - Annecy# -Country France# # #!密码=“!”GRID_VISIBLE = " false " # !VIEW_POSITION = " 0 0 " # !显示_info_nodes=“true”!ATTR_TYPE_ENCODING =“自卫队”# !FME_STROKE_MAX_DEVIATION = " 0 " # !grid_snapto=“false”!BEGIN_PYTHON = " " # !fme_geometry_handling=“enhanced”!描述=

FME可以使用开源Gisgraphy服务(使用geonames和openstreetmap数据)对地址记录进行地理编码。当我们在本文中提到地理编码时,我们的意思是获得已知地址的纬度和经度。

“啊!GRID_HEIGHT = " 50 " # !TITLE =“GeoCodeGisgraph.fmw”# !显示_bookmarks=“true”!max_log_features=“200”!EndoTcl =“”FME_BUILD_NUM = " 13262 " # !ZOOM_SCALE = " 100 " # !类别=“”REDIRECT_TERMINATORS = "没有" # !法律条款FME_reprojection_engine=“FME”!用法=

使用提示和运行输入单个地址

用包含地址属性的源数据集替换creator

您需要提供以下属性——如果需要,使用属性重命名器和各种字符串转换器来重新格式化地址

StreetAddress

西蒂

国家(必须是两个字母的国家代码)

“啊!“Pythython =”“!”历史= " 23 05 201年,肯 布拉格,版本 1“啊!GRID_WIDTH = " 50 " # !REQUIREMENTS_KEYWORD = "没有" # !SOURCE_ROUTING_FILE = " " # !目的地路由文件目的地= "没有" # !LAST_SAVE_DATE = " 2013 - 03 - 01 t16:04:24 " # !FME_IMPLICIT_CSMAP_REPROJECTION_MODE = "基准" # !WORKSPACE_VERSION = " 1 " # !源=“没有”!LAST_SAVE_BUILD="FME(R) 2013 (20130120 - Build 13262 - WIN32)"#!FME_服务器_服务=”!Log_max_recorded_features=“200”!LogyFrase=“!”需求= "

网络连接

“啊!BEGIN_TCL = " " # !显示_annotations=“true”!查看_page_breaks=“false”!IGNORE_READER_FAILURE = "不" # !警告_invalid_xform_param=“yes”!>! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #!
#!忽略目标数据集的GUI忽略Mitab-1、Mitab-u-out-bububububuu-最优空间索引Mitab-U 1、Mitab-u-out-U编码Mitab-U 1、协协协声明Mitab-U 1、Miu-Mif-Minx-Mitab-U 1、Miu-Mif-Miny-Mitab-U 1、Miu-Mif-Miny-Mitab-U 1、Miu-Mif-Maxx-Mitab-U 1、Miu-Mif-Maxy-Mitab-U 1、Miu-Writeu-U区域的中心点Mitau-Mitab-Mitab-U 1、Mitau-Mitab-Mitab-U 1、Miu-Mif-Mif-Mif-Mi两条点线作为折线,划弧,默认宏地理编码,http: 服务.gisgraphy.com 地理编码 地理编码?GUI可选文本_edit_或_num geocoding_baseurl geocoding_baseurl:include[]默认_macro desttataset_mitab C:\support\c59667gui dirname desttataset_mitab destination mapinfo目录:include[set encodedval[fme_encodetext$(desttataset_mitab)];输入“宏destdataset_mitab_fmeencoded__ $encodedVal”;10]DEFAULT_MACRO地址 郊区 DES 如果{{$(DestDataset_MITAB)} == {}} {puts_real{参数'DestDataset_MITAB'必须被赋予一个值,则{};退出1;};“啊!启动头报文!multi_writer_dataset_order BY_IDMULTI_WRITER_FIRST_WRITER_ID 0MULTI_WRITER_TYPE{0} MITABMULTI_WRITER_KEYWORD{0} MITAB_1#!Enth-WbHead头!开始“wb_headermacro wb_”关键字“mitab_1”!Enth-WbHead头!start_dest_header mitab mitab_1然后用于定义要编写的数据集。END_DEST_HEADER # !START_WB_HEADERDEFAULT_MACRO DestDatasetINCLUDE [ if {"$(DestDataset)" != ""} { \ puts {DEFAULT_MACRO DestDataset_MITAB_1 $(DestDataset)} \ } ]#!Enth-WbHead头!Start_Dest_Header Mitab Mitab_1默认值_Macro DestDataset_Mitab_1$(DestDataset_Mitab)gui dirname DestDataset_Mitab_1 Destination MapInfo目录:========================================默认值为==================================================当输出坐标系统为unknownDEFAULT_MACRO _use_source_box_mitab_1时,我们将不尝试使用任何可以从源数据中读取的边界框信息(_use_source_box_mitab_1)# ============================================================================ ============================================================================ ===================================================================注意:这个名称只是写在标题中,对标签文件内容没有影响这是为了Mitab的向后兼容性。MITAB编写器现在放置了原始编码的MapInfo字符集#。否则,它是默认的(中性的)pr 22004[pl]默认的macro mapinfo诳out诳charset neutral诳默认的诳macro mapinfo诳out诳charset诳诳mitab诳charset$(mapinfo诳out诳mitab诳1)诳诳诳==============================诳Me_home)/metafile/mapinfommacs.FMI“mitab U 1 U 1 U 1 U 1 U 1 U 1 U 1 U 1 U 1 U 1 U 1 U 1 U home)/metafile/mapinfmacmacmacmacmacmac素U tymitab U 1 U 1默认U宏观mitab U out U优化空间U索引U MitaB U 1 U 1 U 1 U 1 U U 1 U 1 U 1 U 1 U 1 U U U U U U U U U U U U U U U U U U U U U U U hotaB U 1 U 1 U 1 U max U 1 U U 1 U 1 U 1 U 1 U 1 U 1 U 1构建优化空间索引:默认_宏Mitab_out_编码_Mitab_1 Mitab_1_1_编码“$(Mitab_out_编码_Mitab_1)”GUI可选字符串_或_编码Mitab_out_编码_Mitab_1 Sjis%CP437%CP437%CP850%CP852%CP855%CP855%CP855%CP857%CP8600%CP861%CP863%CP864%CP865%CP869%CP869%CP932%CP936%CP950%CP1250%CP1250%CP1251%CP1251%CP1253%CP1253%CP1254%CP1254%CP1254%CP1254%CP1255%cp1256%iso8859-1%iso8859-2%iso8859-3%iso8859-4%iso8859-5%iso8859-6%iso8859-7%iso8859-8%iso8859-9字符编码(可选):35;==============================以下行覆盖功能的默认坐标系。This# provides a mapinfo-specific coordinate system line to the writer.DEFAULT_MACRO _COORDSYS_STATEMENT_MITAB_1 GUI OPTIONAL TEXT _COORDSYS_STATEMENT_MITAB_1 Coordinate System Statement:MITAB_1_COORDSYS_STATEMENT $(_COORDSYS_STATEMENT_MITAB_1)# ============================================================================# The following lines provide a bounding area for the output files.因为mapinfo的坐标存储精度有限,providing# a tight bounds on the storage can preserve accuracy.DEFAULT_MACRO _MIF_MINX_MITAB_1 GUI OPTIONAL FLOAT _MIF_MINX_MITAB_1 Bounds Min X:DEFAULT_MACRO _MIF_MINY_MITAB_1 GUI OPTIONAL FLOAT _MIF_MINY_MITAB_1 Bounds Min Y:DEFAULT_MACRO _MIF_MAXX_MITAB_1 GUI OPTIONAL FLOAT _MIF_MAXX_MITAB_1 Bounds Max X:DEFAULT_MACRO _MIF_MAXY_MITAB_1 GUI OPTIONAL FLOAT _MIF_MAXY_MITAB_1 Bounds Max Y:MITAB_1_BOUNDS $(_MIF_MINX_MITAB_1) $(_MIF_MINY_MITAB_1) $(_MIF_MAXX_MITAB_1) $(_MIF_MAXY_MITAB_1)# ============================================================================# Specify whether we want to generate region centroids.DEFAULT_MACRO _WRITE_REGION_CENTROIDS_MITAB_1 noGUI CHOICE _WRITE_REGION_CENTROIDS_MITAB_1 yes%no Generate and Write Region Centroids:MITAB_1_WRITE_REGION_CENTROIDS $(_WRITE_REGION_CENTROIDS_MITAB_1)#=============================================================================# Specify whether 2 point lines will be output as line or polylinesDEFAULT_MACRO TWO_POINT_LINE_AS_POLYLINE_MITAB_1 noGUI OPTIONAL CHOICE TWO_POINT_LINE_AS_POLYLINE_MITAB_1 yes%no Write 2 Point Line as Polyline:MITAB_1_TWO_POINT_LINE_AS_POLYLINE $(TWO_POINT_LINE_AS_POLYLINE_MITAB_1)#=============================================================================# Specify whether to stroke arcs or not.DEFAULT_MACRO _STROKE_ARCS_MITAB_1 noGUI OPTIONAL CHOICE _STROKE_ARCS_MITAB_1 yes%no Stroke Arcs into Polyline:MITAB_1_STROKE_ARCS $(_STROKE_ARCS_MITAB_1)MITAB_1_DATASET "$(DestDataset_MITAB_1)"#!END_DEST_HEADER # !end-headerLog_文件名“$(FME_-mf_-dir)geocodegisgraph.log”log“log”附加yeslog_max_max_feature200log_max_记录的_feature200fm_重新投射u发动机FMFME _隐式_cs地图_重新投射u模式datumfm _几何学_处理增强的时间_中风_最大_偏差0应用u文件_id geocodegisgraph.fmwlog _计时yeslog _过滤_面罩-1默认_宏数据集_宏数据集_关键字_关键字_关键字_宏数据集_米塔布_ 1 Mitab_1诜诜诜--包括[如果[信息存在env(fm _temp)&&&[文件isdirectory$env(fm _temp)&&&[文件isdirectory$env(temp)]123;设置gvisualizertemp$env(fm _temp)else if;[信息存在env(temp)];设置gvisualizertemp$env(temp)else if;$tcl ;$tcl平台(平台)==“unix”(unix)Unix”;设置gvisualizertp“else设置gvisualizertemp c:”regsub - {[,]} {$ (WORKSPACE_NAME)} {_} wsname;设置gVisualizerTemp $gVisualizerTemp/${wsname}_[时钟格式[时钟秒]-格式%H%M%S];放入“macro workspace_temp_dir$gvisualizertemp”;宏可视化工具_feature_file$(workspace_temp_dir)/inspector.ffsmacro可视化工具_schema_file$(workspace_temp_dir)/inspector.fscmacro可视化工具_create_space_index yesdefault_macro wb_current_context---------------------------------tcl2 proc creator_coordysremover global fme_coordsys;设置FME_CoordSys {};}宏creator_class_activatedmacro Creator_2D3D 2d_geometry宏Creator_COORDS if {{Geometry Object} == {2D坐标列表}}{put{宏Creator_2D3D 2D_GEOMETRY};{宏Creator_CLASSIC *}}包含[if{{几何对象}== {3D坐标列表}}{宏Creator_2D3D 3D_GEOMETRY};如果{{几何对象}== {2D Min/Max Box}} {set comment{我们需要将minX minY maxX maxY坐标转换成完整的多边形列表};设置splitcoords[split[string trim{ }]];如果[长度$splitcoords]>4设置trimmedcoords如果{$item != {}} {lappend trimmedCoords $item}};设置splitCoords trimmedCoords美元;};如果{[llength $splitCoords] != 4} {error {Creator: Coordinate List必须有四个数字- ' 的是无效的};};设置minx[lindex$splitcoords 0];set minY [lindex $splitCoords 1];设置maxX [lindex $ splitcods 2];设置maxy[lindex$splitcoords 3];输入“macro creator_coords$minx$miny$minx$maxy$maxx$maxy$maxx$miny$minx$miny”;输入{宏Creator_2D3D 2D_GEOMETRY};Creator_XML_Creator CREATE_AT_END无输出特性 ?XML version = 编码= US_ASCII 单机= 几何学 无效的 几何学 )工厂def$(创建者_经典)创意工厂_name创建者_经典_创建者$(创建者d)$(创建者coords)创造_端无输出特征_类型\\\\uuuuuuuuu\\\\\\\\\\\\\\\\\\\\\\\\\实例“输出功能_type creator_created@tcl2(creator_coordsysremover)@coordsys()fme_feature_type creator---------------------------------------tcl2 proc attributecreator_f117b684_15ce_40be_8019_69513b9258997_attrsetter attrlist set attrlist[字符串修剪$attrlist()]”设置attrs[拆分$attrlist,];foreach attrname attrval$attrs if[字符串匹配{* *} $attrName] == 1} {set attrName [FME_Execute EvaluateExpression {STRING} $attrName {AttributeCreator}];{set attrName [FME_DecodeText $attrName];};如果{[字符串匹配{* *} $attrVal] == 1} {set attrVal [FME_Execute EvaluateExpression {STRING_ENCODED} $attrVal {AttributeCreator}];};fm_setattribute$attrname[fm_decodetext$attrval];};};factory_def*teefactory factory_name attributeCreator input feature_type creator_created output feature_type attributeCreator_output“@tcl2(attributeCreator_f117b684_15ce_40be_8019_69513b9258997_attrsetter(streetaddress,$(address),city,$(city),country,$(country),baseurl,$(geocoding_baseurl))”,“-------------------------------————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————--lookup attributeValueMapper_lookup_table antigua 阿拉伯巴布达公司 波斯尼亚酋长国 开曼群岛黑塞哥维那 中国肯塔基群岛 P.Rep。中国Cocos 岛屿CC做饭 岛屿CK科斯塔 里卡捷克 捷克共和国多米尼加 雷普尔德埃尔 萨尔瓦多SV福克兰 岛屿 马尔维纳斯 法洛 佛罗里岛 法属波利尼西亚 圭亚那GF格鲁吉亚 共和国 通用电气象牙 海岸CI马歇尔 岛屿mh neth. 安的列斯一个新的 新喀里多尼亚 新几内亚PG新 新西兰诺福克 北纳法岛 韩国KP俄罗斯 联合俄罗斯圣 克里斯多福 尼维斯肯桑 马里诺SM沙特 阿拉伯山山脉 利昂·萨尔·所罗门 南部岛屿某人 非洲扎南 韩国KR SRI 斯里兰卡路。 圣卢西亚LC。 文森特 格林纳丁斯群岛VC的 巴哈马群岛BS土耳其人 凯科斯 岛屿TC曼联 王国GB瓦努阿图 新的 赫布里底斯 梵蒂冈 西蒂 状态 神圣的 弗吉尼亚州越南 南VN处女 英国 阿尔巴尼亚、阿尔及利亚、安道尔、安哥拉、安圭拉、阿根廷、亚美尼亚、阿鲁巴、澳大利亚、奥地利、阿塞拜疆、阿兹、巴林、孟加拉国、巴巴多斯、白俄罗斯、比利时伯利兹BZ百慕大BM玻利维亚博茨瓦纳BW巴西BR文莱BN保加利亚BG柬埔寨KH喀麦隆CM加拿大CA乍得TD智利CL中国香港哥伦比亚公司刚果CD克罗地亚HR古巴cu塞浦路斯cy捷克斯洛伐克cs丹麦dk多米尼加dm厄瓜多尔ec埃及例如爱沙尼亚ee埃塞俄比亚et斐济fj芬兰fi法国fr gabon ga冈比亚gm德国de加纳gh直布罗陀gi希腊格陵兰格陵兰格陵兰格陵兰格陵兰格陵兰格陵兰格陵兰格陵兰格陵兰格陵兰格陵兰格陵兰格陵兰格陵兰格陵兰格陵兰格陵兰格陵兰格陵兰格陵兰格陵兰格陵兰格陵兰格陵兰格陵兰格陵兰格陵兰格陵兰格陵兰格陵兰格陵兰格陵意大利IT牙买加JM日本JP约旦JO哈萨克斯坦KZ肯尼亚KE科威特KW吉尔吉斯斯坦KG老挝LA拉脱维亚LV黎巴嫩LB利比里亚LR利比亚LY列支敦士登LI立陶宛LT卢森堡LU澳门莫马其顿MK马达加斯加MG马拉维MW马来西亚MY马里ML马耳他MT马提尼克MQ毛里塔尼亚MR毛里求斯MU墨西哥MX摩尔多瓦MD摩纳哥MC摩洛哥MA缅甸MM纳米比亚NA尼泊尔NP NETherlands nl nicargua niger ne nigeria ng norway no oman om pakistan pk palau pw巴拿马pa巴拉圭py秘鲁pe菲律宾ph波兰pl葡萄牙pt卡塔尔qatar qa罗马尼亚ro塞内加尔新加坡、斯洛伐克、斯洛文尼亚、西班牙、苏丹、苏里南、斯威士兰、瑞典、瑞典、瑞士、叙利亚、台湾、坦桑尼亚、泰国、特立尼达 多巴哥、突尼斯、土耳其和苏联ENCODED_SUPPORTUNICODEFACTORY_DEF * TeeFactory FACTORY_NAME AttributeValueMapper INPUT FEATURE_TYPE AttributeCopier_OUTPUT OUTPUT FEATURE_TYPE AttributeValueMapper_OUTPUT @Lookup(attributevaluemapper_table,"Country",FORWARD|ENCODED_ATTR,国家)# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -FACTORY_DEF * TestFactory FACTORY_NAME测试输入FEATURE_TYPE AttributeValueMapper_OUTPUT测试StreetAddress NOT_ATTRIBUTE_IS_EMPTY 已编码的测试国家NOT_ATTRIBUTE_IS_EMPTY 编码的测试城市NOT_ATTRIBUTE_IS_EMPTY 编码布尔值_operator and output passed feature_type tester_passed output failed feature_type tester_failed------------------------------------------------------------------设置指令以将所有元属性添加到功能。我们这样做是为了让用户在查看的features.reader_meta_a中看到所有可能的信息。属性fme_feature_type fme_dataset fme_basename假设工作区临时目录已经设置和创建。ControlDefs::writeVisualizerTempDirDEFAULT_MACRO WORKSPACE_TEMP_DIRINCLUDE [if {[string length {}] > 0} {set catter "";逗号””;{}{设置catter "$catter$comma@Value(\"$attr\")";设置逗号“_”;};放入“macro catmac_@concatenate($catter)”;} else{放置“宏CATMAC”;};设置安全亚搏在线名称“[regsub -all {[^a-zA-Z0-9]} {MissingData} _]_[expr round(rand() * 1000000)]_[时钟点击-毫秒]”;输入“宏SAFE_FFS亚搏在线_NAME $safeName”;]# Make the temporary directory that the FFS files will live in.FACTORY_DEF * CreationFactory FACTORY_NAME MissingData_DirCreator OUTPUT FEATURE_TYPE __nukeme__ @Tcl2("catch {file mkdir {$(WORKSPACE_TEMP_DIR)}}")FACTORY_DEF * TeeFactory FACTORY_NAME MissingData_DirCreatorCleanerUpper INPUT FEATURE_TYPE __nukeme__# Send raster,点云和矢量功能沿不同路径向下,以准备它们用于查看工厂定义测试工厂名称MissingData功能控制器输入功能测试失败&FME类型=“FME光栅”输出失败功能输出失败功能输出类型MissingData功能输出通过功能输出类型MissingData功能工厂定义*测试工厂名称MissingData_uuuu FeatureDirector1输入功能_u Type MissingData_uuuu NotrasterFeatures_uuuuuuuu Test&fme_Type==“FME_Point_Cloud”输出失败功能_Type MissingData_uuuuuuuuuuu VectorFeatures_uuuuuuuuuu输出传递功能_u Type MissingData_uuuu PointCloudFeatures_uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu矢量功能可能会简单地覆盖它们的颜色Enfactory_def*teefactory factory_name missingdata_vectorsetter upper input feature_type missingdata_uuu vectorfeatures_uuuuuuuu output feature_type_uuuuuuviewme_uuuuuuuuuuuuu点云功能可能需要细化,请注意,我们不直接调用thinpointcloud功能,而是通过TCL来实现。这应允许此变压器与台式机许可证一起使用,even though ThinPointCloud requires Professional.Tcl2 proc MissingData_5d7278e5_0fff_48f2_912f_472b44ca3a6f6_thinPointCloud {} { if {[string equal {NO_THINNING} {KEEPNPOINT}]} { FME_Execute ThinPointCloud NO_THINNING ;如果{[string = {no_thin} {MAXNUMPOINTS}]} {FME_Execute ThinPointCloud no_thin ;{FME_Execute ThinPointCloud no_细化 ;}elseif[字符串等于无减薄最后一个点]fme执行thinpointcloud无减薄 ;};}工厂_def*te工厂_name Missing数据UUU点云稀释剂输入功能_type Missing数据UUU点云功能\UUUU\\Uuuuuviewme uu@tcl2(“Missing数据d7278e5_0fff U 48f U 912f U 472b44CA3a6f6_Thi点云”)Tcl2 proc Missing数据U 5d7278e5 U 0fff U 48f U 48f U 48f U 912F U 472b444444ca3a3a3a3a6f6 U PrePrepar擦除器123;子集合子集合行subsetstartcol subsetnumcols set usedi[string equal-nocase$(fme_viewer_app)fmedatainspector];如果{!$usedi fme_执行applyrasterrotation双线性;};设置doResample [string equal {NoReduction} {Resample}];设置do子集[string = {NoReduction}{子集}];设置多边界[字符串等于noreducation boundingboxonly];{FME_Execute GeometryType fme_polygon;}elseif$doresample$dosubset设置注释首先,我们需要给所有属性加上前缀。这是因为我们要调用@rasterproperties,我们要确保它不会覆盖任何现有的属性。};设置kattrPrefix“.”;设置allNames [FME_AttributeNames];{设置newName $kAttrPrefix;追加newname$oldname;fme_renameattribute$newname$oldname;};执行光栅属性;如果$doresample设置oldnumcols[fme_getattribute _num_columns];设置oldNumRows[fm_getattribute_num_rows];设置oldSpacingX [FME_GetAttribute _spacing_x];设置oldSpacingY [FME_GetAttribute _spacing_y];设置kMinNumCells 32;设置kmaxnumcells 512;set comment{我们只会在两个维度都大于最小num单元格时重新采样,至少有一个大于最大值。};如果$oldNumRows>$kminNumCells&$oldNumCols>$kminNumCells&($oldNumRows>$kmaxNumCells$oldNumCols>$kmaxNumCells)设置newspacingX 1.0;将newspacingY设置为1.0;如果$oldNumRows>$oldNumCols设置注释如果行多于列,我们需要选择一个间距,将行数减少到我们选择的最大值。};设置newSpacingY [expr 1.0 * $oldNumRows * $oldSpacingY / $kMaxNumCells];设置newSpacingX [expr 1.0 * $newSpacingY / $oldSpacingY * $oldSpacingX];设置注释现在我们需要检查这样做是否会导致列低于最小值。如果是这样,选择间距,这样我们只会下降到最小值(而不是过去)。};设置newnumcols[expr$oldnumcols*$oldspacingx/$newspacingx];如果{$newNumCols < $kMinNumCells} {set newSpacingX [expr 1.0 * $oldNumCols * $oldSpacingX / $kMinNumCells];设置newSpacingY [expr 1.0 * $newSpacingX / $oldSpacingX * $oldSpacingY];};}否则设置注释这与上述情况相同,除了行和cols的角色是相反的。};设置newSpacingX [expr 1.0 * $oldNumCols * $oldSpacingX / $kMaxNumCells];设置newSpacingY [expr 1.0 * $newSpacingX / $oldSpacingX * $oldSpacingY];设置newNumRows[expr$oldNumRows*$oldSpacingy/$newSpacingy];如果$newNumRows<$kminNumCells设置newSpacingy[expr 1.0*$oldNumRows*$oldSpacingy/$kminNumCells];设置newSpacingX [expr 1.0 * $newSpacingY / $oldSpacingY * $oldSpacingX];};};FME_Execute ResampleRaster CELL_SIZE $newSpacingX $newSpacingY最近邻;};{set comment{获取一些字符串的值,这些字符串可能是属性或常量。请注意,我们传递了正在使用的属性前缀,因为如果一个结果是一个属性,它实际上不是字符串中的确切名称(因为我们在上面重命名了所有属性)。};设置rasternumrows[fme_getattribute_num_rows];设置rasternumcols[fm_getattribute_num_columns];设置注释仅当指定的开始位置实际在光栅内时才进行子集设置。};如果{$subsetStartRow < $rasterNumRows && $subsetStartCol < $rasterNumCols} {set comment{现在将子集绑定到栅格的大小,这样我们就不会创建填充。};{set subsetNumRows [expr $rasterNumRows - $subsetStartRow];};{set subsetNumCols [expr $rasterNumCols - $subsetStartCol];};fme_execute substraster$substratstarrow$substratnumrows$substratstartcol$substratnumcols;};};设置comment删除@rasterproperties添加的所有属性,并从实际属性中删除前缀。我们假设它们都以下划线开头。};fme_regexp_match {^_};{设置newName $kAttrPrefix;追加newname$oldname;fme_renameattribute$旧名称$新名称;};};}工厂定义*teefactory工厂名称MissingData_RasterSetter上输入功能_Type MissingData_uuRasterFeatures_uuuuuuuuuuOutput Feature_Type_uuuViewMe_uuuuuuuu@tcl2(“MissingData_5d7278e5_0fff_48f2_912f_472b44ca3a6f6_Prepareraster{ }{ }{ }{ 现在把所有的功能都路由到记录器中,changing their# feature type to the transformer name so that they view nicely# MissingData_5d7278e5_0fff_48f2_912f_472b44ca3a6f6_VIS_FEAT_TYPE changes the feature types# of the features being visualized.DEFAULT_MACRO MissingData_5d7278e5_0fff_48f2_912f_472b44ca3a6f6_VIS_FEAT_TYPE MissingData$(CATMAC)DEFAULT_MACRO VISUALIZER_FEATURE_FILE $(WORKSPACE_TEMP_DIR)/$(亚搏在线SAFE_FFS_NAME).ffsDEFAULT_MACRO VISUALIZER_CREATE_SPATIAL_INDEX NOFACTORY_DEF * RecorderFactory FACTORY_NAME MissingData_Recorder INPUT FEATURE_TYPE __viewme__ _wb_termination_feature Yes @FeatureType(TERMINATOR_@Value(_wb_termination_xformer)) INPUT FEATURE_TYPE __viewme__ @FeatureType($(MissingData_5d7278e5_0fff_48f2_912f_472b44ca3a6f6_VIS_FEAT_TYPE)) FEATURE_FILE "$(VISUALIZER_FEATURE_FILE)" CREATE_SPATIAL_INDEX "$(VISUALIZER_CREATE_SPATIAL_INDEX)" INSPECTOR "$(VISUALIZER_CREATE_SPATIAL_INDEX)" FSC_SCHEMA _creation_instance,varchar 255 ,街道地址,varchar 255 锡蒂 255 、国家、varchar 255 ,基URL,varchar 255 模式记录-----------------------------------------------------------Tcl2 proc stringconcatenator_9dc172a3_c23c_4ebe_b1e1_4405c69f5b367_doseattr attrtext fme_setattribute[fme_decodext geocodingurl][fme_decodext$attrtext]factory teefactory name stringconcatenator input feature_type tester_pasSED输出特性_type stringconcatenator_output@tcl2(“stringconcatenator_9dc172a3_c23c_4ebe_b1e1_4405c69f5b367_doseattr@evaluateexpression(string_encoded, 价值 BaseURL 地址= 价值 StreetAddress 价值 西蒂 国家= 价值 国家 ,StringConcatenator)“)-----------------------------------------------------------动态_函数_配置http httpfetcher_http_请求请求_头http_用户名“”http_密码“”http_authmethod基本代理\u url代理\u端口代理\u用户名“”代理\u密码“”代理\u authmethod基本使用\u recv_header_encoding no saved_headers_attr“_headers”status_code_attr“_http_status_code”continue_on_error no use_cookies no factory_def*teefactory factory_name httphetcher input feature_type stringconcatenator_output feature_type httphetcher_output@http(get,@EvaluateExpression(字符串_编码, 价值 地理编码URL HTTPFetcher),“URL_内容”,HTTPFetcher_http_request) # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -FACTORY_DEF * XFMapFactory FACTORY_NAME XMLFlattener输入FEATURE_TYPE HTTPFetcher_OUTPUT XML_STREAM“_url_contents XFMAP_FEATURE_PATHS_EXPRESSION XFMAP_FEATURE_PATHS_STRUCTURE“结果 结构 分隔符= . map-empty-elements = 是的 matched-prefix = 属性 匹配的属性= 是的 匹配的祖先属性= 基数= + 除了 structure-prefix = child-position-attribute = 属性标识符= !—— 这个 选项 在这里 允许 定制 属于 这个 属性 属性 列表 属于 这个 匹配的 XML 子树 那个 添加 FME 特性。 在这里 这个 选项 那个 可以 明确规定: 1. 分隔符 这个 价值 属于 选项 习惯于 作为 这个 分隔符 这个 命名 属于 这个 属性 属于 这个 孩子们 属于 这个 匹配的 元素。 默认的 价值观: . 可能的 价值观: 任何 一串 2。 映射空元素 如果 是的 然后 任何 元素 添加 作为 属性 价值观 到上面 这个 特性。 否则 这个 属性 添加 到上面 这个 特性。 默认的 价值 如果 明确规定: 是的 可能的 价值观: 是的,不 默认的 价值观: 可能的 价值观: 任何 一串 3. matched-prefix 这个 选项 控制 是否 FME 功能 属性 产生 前缀 匹配的 元素 年代 姓名。 如果 这个 价值 是的 然后 这两个 这个 匹配的 元素 年代 属性 全部的 它的 孩子们 前缀 如果 这个 价值 然后 没有一个 属于 这个 功能 属性 前缀 匹配的 元素 年代 的名字 如果 这个 价值 孩子们 然后 只有 这个 孩子们 属于 这个 匹配的 元素 前缀 如果 这个 价值 属性 然后 只有 这个 属性 属于 这个 匹配的 元素 前缀 默认的 价值 如果 明确规定: 是的 可能的 价值观: 是否子项属性 4. matched-attributes 如果 选项 是的 然后 这个 属性 属于 这个 匹配的 元素 映射 作为 FME 功能 属性。 否则 这个 属性 属于 这个 匹配的 元素 忽略。 matched-prefix 选项 可以 属性 是的 允许 这个 属性 前缀 这个 的名字 属于 这个 匹配的 元素。 默认的 价值 如果 明确规定: 是的 可能的 价值观: 是的,不 5。 matched-ancestor-attributes 这个 选项 控制 是否 XML 属性 祖先 属于 这个 匹配的 元素 应该 包括 作为 FME 功能 属性。 这个 有效的 价值观 选项 是: - 1 XML 属性 属于 这个 属于 这个 匹配的 元素 添加 - 祖父母 2 XML 属性 属于 这个 祖父母 属于 这个 匹配的 元素 添加 - 1 XML 属性 属于 这个 属于 这个 文档 添加 - 任何 非负的 数量 XML 属性 属于 这个 祖先 通过 向上 x 水平 这个 匹配的 元素 补充道。 这个 匹配的 元素。 包括 更多 一个 祖先 多个 价值观 可以 分离的 通过 一个 空间。 例子: 得到 这个 属性 我们 可以 指定 匹配的祖先属性= 祖父母 默认的 价值观: 可能的 价值观: 父母|祖父母|根 6。 基数 这个 选项 可以 明确规定 作为 一个 空间 分离的 列表 属于 基数 指令。 默认的 价值观: + 对待 小孩 元素 作为 一个 列表 如果 那里 更多 一个 这个 相同 的名字 可能的 价值观: 请参考 这个 文档 属于 XFMAP 部分 XML 读者 文档 7. structure-prefix 这个 选项 可以 非空 一串 那个 服务 作为 一个 前缀 每一个 属性 那个 生成的 一个 匹配的 元素。 默认的 价值观: 可能的 价值观: 任何 一串 8. 除了 这个 除了 属性 接受 这个 相同 类型 属于 表达式 作为 这个 匹配 除了 属性 属于 一个 映射 规则。 例子 这个 表达 除了 小孩 2 能够 习惯于 排除 这个 第二 小孩 元素 包含的 一个 元素 这个 输出 属于 这个 结构 子块 默认的 价值观: 可能的 价值观: 任何 路径 表达 9. child-position-attribute 选项 非空 一串 每一个 小孩 元素 生成 一个 额外的 功能 属性 谁的 价值 这个 位置 属于 这个 小孩 元素 witihin 它的 的父母。 默认的 价值观: 可能的 价值观: 任何 一串 10. attribute-identifier 任何 一串 XML 属性 可以 有区别的 元素。 通过 设置 选项 非空 一串 XML 读者 追加 一个 前缀 这个 属性 这个 元素。 所有 这个 选项 更多 阐述了 例子 描述 这个 XML 读者 文档。 —— “输出一个功能一个输入是输出映射的功能一类型xmltlatener输出--------------------------------------------------------公开所有属性。这确保如果您公开fme_dataset,您将得到它。reader_meta_attributes fm_feature_type fm_dataset fm_basename factory_def*teefactory factory_name attributeexposer input feature_type xmlplantner_output output feature_type attributeexposer_output-------------------------------------factory_def*testfactory factory_name 2dpointreplacer输入特征_type attributeexposer _output test&fme _type=fme _文本输出通过特征_type 2dpointreplacer _point@xvalue(“@value(lng)”,reset)@yvalue(“@value(lat)”)@dimension(2)输出失败特征_type 2dpointreplacer _point@xvalue(“@value(lng)”,reset)@yvalue(“@value(lat)”)@尺寸(2)@geometrytype(fme_point)y_name“coordinatesystemsetter output splitter”输入功能_type coordinatesystemsetter _output output功能_type coordinatesystemsetter _output功能_type coordinatesystemsetter _output-----------------------------------------------------------------------设置该指令以向功能添加所有元属性。#我们这样做是为了让用户在查看的features.reader-meta-attributes-fme-feature-type-fme-dataset-fme-basename假设工作区临时目录已经设置和创建。ControlDefs::writeVisualizerTempDirDEFAULT_MACRO WORKSPACE_TEMP_DIRINCLUDE [if {[string length {}] > 0} {set catter "";逗号””;{}{设置catter "$catter$comma@Value(\"$attr\")";设置逗号“_”;};放入“macro catmac_@concatenate($catter)”;} else{放置“宏CATMAC”;};设置安全亚搏在线名称“[regsub -all {[^a-zA-Z0-9]} {GeoCodedAddress} _]_[expr round(rand() * 1000000)]_[时钟点击-毫秒]”;输入“宏SAFE_FFS亚搏在线_NAME $safeName”;]# Make the temporary directory that the FFS files will live in.FACTORY_DEF * CreationFactory FACTORY_NAME GeoCodedAddress_DirCreator OUTPUT FEATURE_TYPE __nukeme__ @Tcl2("catch {file mkdir {$(WORKSPACE_TEMP_DIR)}}")FACTORY_DEF * TeeFactory FACTORY_NAME GeoCodedAddress_DirCreatorCleanerUpper INPUT FEATURE_TYPE __nukeme__# Send raster,点云和矢量特征沿不同路径向下,以准备它们以供查看工厂定义测试工厂名称地理编码地址功能主管输入功能类型坐标系统设置器输出0测试和FME类型=“FME光栅”输出失败的特征类型地理编码地址输出通过的特征类型地理编码edaddress_uuuu rasterfeatures_uuu factory_u def*test factory factory_name geocodedaddress_uuu featuredirector1 input feature_type geocodedaddress_uuuu notrasterfeatures_uuuuuu test&fme_type=“fme_point_cloud”输出失败的feature_type geocodedaddress_uuu vectorfeatures_uuuuuuuu output passed feature_type geocodedaddress_uuuu pointcloudfeatures_uuuuuuuu vectorfeatures_u功能的颜色可能会被覆盖。请注意,我们不直接调用thinpointcloud函数,而是通过TCL来实现。这应允许此变压器与台式机许可证一起使用,even though ThinPointCloud requires Professional.Tcl2 proc GeoCodedAddress_0f7b9cf2_cf5e_4eac_bef7_e4eefc59b5f47_thinPointCloud {} { FME_Execute ThinPointCloud NO_THINNING 1;}工厂_def*te工厂工厂_name geocodedadddress_uuu pointcloud稀释剂输入特征_type geocodedadddress_uuu pointcloud特征uuuuuuuuu输出特征_type uuuuviewme_uu@tcl2(“gecodedadddress_0f7b9cf2_cf5e_4eac_4eefc59b5f47_th点云”)Tcl2 proc geocodedadddress_0f7b9cf7b9cf2_cf5e_4eac_4eac_be7_e4eefc59b59b59b59b59b5f47 f45 f47 f准备阶段子部分w subsetNumRows subsetStartCol subsetNumCols设置useDi[字符串相等-nocase$(fme_viewer_app)fmedatainspector];如果{!$usedi fme_执行applyrasterrotation双线性;};设置doResample [string equal {NoReduction} {Resample}];设置do子集[string = {NoReduction}{子集}];设置多边界[字符串等于noreducation boundingboxonly];{FME_Execute GeometryType fme_polygon;}elseif$doresample$dosubset设置注释首先,我们需要给所有属性加上前缀。这是因为我们要调用@rasterproperties,我们要确保它不会覆盖任何现有的属性。};设置kattrPrefix“.”;设置allNames [FME_AttributeNames];{设置newName $kAttrPrefix;追加newname$oldname;fme_renameattribute$newname$oldname;};执行光栅属性;如果$doresample设置oldnumcols[fme_getattribute _num_columns];设置oldNumRows[fm_getattribute_num_rows];设置oldSpacingX [FME_GetAttribute _spacing_x];设置oldSpacingY [FME_GetAttribute _spacing_y];设置kMinNumCells 32;设置kmaxnumcells 512;set comment{我们只会在两个维度都大于最小num单元格时重新采样,至少有一个大于最大值。};如果$oldNumRows>$kminNumCells&$oldNumCols>$kminNumCells&($oldNumRows>$kmaxNumCells$oldNumCols>$kmaxNumCells)设置newspacingX 1.0;将newspacingY设置为1.0;如果$oldNumRows>$oldNumCols设置注释如果行多于列,我们需要选择一个间距,将行数减少到我们选择的最大值。};设置newSpacingY [expr 1.0 * $oldNumRows * $oldSpacingY / $kMaxNumCells];设置newSpacingX [expr 1.0 * $newSpacingY / $oldSpacingY * $oldSpacingX];设置注释现在我们需要检查这样做是否会导致列低于最小值。如果是这样,选择间距,这样我们只会下降到最小值(而不是过去)。};设置newnumcols[expr$oldnumcols*$oldspacingx/$newspacingx];如果{$newNumCols < $kMinNumCells} {set newSpacingX [expr 1.0 * $oldNumCols * $oldSpacingX / $kMinNumCells];设置newSpacingY [expr 1.0 * $newSpacingX / $oldSpacingX * $oldSpacingY];};}否则设置注释这与上述情况相同,除了行和cols的角色是相反的。};设置newSpacingX [expr 1.0 * $oldNumCols * $oldSpacingX / $kMaxNumCells];设置newSpacingY [expr 1.0 * $newSpacingX / $oldSpacingX * $oldSpacingY];设置newNumRows[expr$oldNumRows*$oldSpacingy/$newSpacingy];如果$newNumRows<$kminNumCells设置newSpacingy[expr 1.0*$oldNumRows*$oldSpacingy/$kminNumCells];设置newSpacingX [expr 1.0 * $newSpacingY / $oldSpacingY * $oldSpacingX];};};FME_Execute ResampleRaster CELL_SIZE $newSpacingX $newSpacingY最近邻;};{set comment{获取一些字符串的值,这些字符串可能是属性或常量。请注意,我们传递了正在使用的属性前缀,因为如果一个结果是一个属性,它实际上不是字符串中的确切名称(因为我们在上面重命名了所有属性)。};设置rasternumrows[fme_getattribute_num_rows];设置rasternumcols[fm_getattribute_num_columns];设置注释仅当指定的开始位置实际在光栅内时才进行子集设置。};如果{$subsetStartRow < $rasterNumRows && $subsetStartCol < $rasterNumCols} {set comment{现在将子集绑定到栅格的大小,这样我们就不会创建填充。};{set subsetNumRows [expr $rasterNumRows - $subsetStartRow];};{set subsetNumCols [expr $rasterNumCols - $subsetStartCol];};fme_execute substraster$substratstarrow$substratnumrows$substratstartcol$substratnumcols;};};设置comment删除@rasterproperties添加的所有属性,并从实际属性中删除前缀。我们假设它们都以下划线开头。};fme_regexp_match {^_};{设置newName $kAttrPrefix;追加newname$oldname;fme_renameattribute$旧名称$新名称;};};}工厂定义*teefactory工厂名称geocodedaddress\u rastersetter上输入功能\u类型geocodedaddress\uuurasterfeatures\uuuuuuuuuuuoutput feature\u类型\uuviewme\uuuuuuuuuu@tcl2(“geocodedaddress\u 0f7b9cf2\u cf5e\u 4eac\u before7\u e4eefc59b5f47\u Preparaterater{ }{ }{ }{ 现在把所有的功能都路由到记录器中,将其特征类型更改为变压器名称,以便他们能够很好地查看地理编码数据地址“U 0F7B9CF2”U CF5E U 4EAC U 4EE4EEEFC59B5f47“U VIS U FEAT”类型更改要可视化的特征的特征类型。默认值“U宏地理编码数据地址”U 0F7B9CF2“U CF5E U 4E4EE4EFC59B5f47“U VIU U FEU特征”类型地理编码数据地址$(catmac)默认值“U U U U U U类型地理编码数据地址$(catmac)默认值“U U U U U U U U U U类型地理编码数据地址$(catmac)默认值”默认值“U U U U U U U U U U U U U U U U U U U U U U U U宏可视化工具E$(workspace_temp_dir)/$(safe_ffs_name).ffsd亚搏在线efault_macro visualizer_create_spatial_index nofactory_def*recorder factory factory_name geocodedaddress_recorder input feature_type_uuuviewme_uuuwb_termination_feature yes@feature type(terminator_@value(_wb_termination_xformer))input feature_type_uviewme_uuuuuuuu@feature type($(geocodedaddress_0f7B9CF2_CF5e_4eac_Bef7_E4eefc59b5f47_-vis_Feat_-type))功能_-file“$(可视化工具_-feature_-file)”创建_-spatial_-index“$(可视化工具_-create_-spatial_-index)”检查器“$(可视化工具_-create_-spatial_-index)”fsc_-schema _-creation_实例,varchar 255 ,街道地址,varchar 255 锡蒂 255 、国家、varchar 255 ,基URL,varchar 255 、GeoCodingURL varchar 255 、_http_status_code varchar 255 、_url_contents varchar 255 LNG、VARCHAR 255 lat, varchar 255 模式记录-----------------------------------------------------------------工厂定义*工厂名称“coordinatesystemsetter”输出“1->addresses correlator”输入功能“类型coordinatesystemsetter”输出“1输出功能”类型“转到”最终“输出”路由器“multi-writer”id 0@transform(fme_generic,mitab)@supplyAttributes(uuwb_out_feat_type_uuuu,addresses)----------------------------------------------------------------工厂定义*测试工厂名称“最终输出功能类型路由器”输入功能type*测试@value(uwb_out_feat_type_uuuu)!=“”输出传递的特征_type*@featureType(@value(uuuwb_out_feature_type_uuuuuuuuuuuuuuuuuuuuuuuu2)输出失败的特征uuuuuuu type uuuuuuuuuuuTc2(“fme_statmessage 818059@value(fme_template_feature_type)818060 818061 fme_warn”)35;-----------------------------factory_def*teefactory factory_name“最终输出输入功能uu type uu nuke u me uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuxtcl(“如果[文件存在$(工作区temp_目录)]设置文件[glob-nocomplain-目录$(工作区temp_目录)-详细信息*.ffs];如果[长度$files]==1设置文件$(workspace_temp_dir)/追加文件[lindex $files 0];eval FME_Execute System \173\042$(FME_HOME_UNIX)/fmedatainspector\042—visualizer—单应用程序—delete-on-close—no-source-prompt—f FFS $theFile & \175;}elseif[长度$files]==0 catch文件删除-强制$(工作区临时目录)}else设置文件noextforeach文件名$files lappend filesnoext[字符串trimright$filename.ffs]eval FME_Execute System \173\042$(FME_HOME_UNIX)/fmedatainspector\042—visualizer—单应用程序—delete-on-close—no-source-prompt—d {$(WORKSPACE_TEMP_DIR)} -a ffs -f ffs $filesNoExt & \175;};};MITAB_1_DEF address lng char(20) StreetAddress char(20) City char(20) lat char(20)