#! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #!

该键值对总是

加入的功能,但不

忘记暴露属性

如果你真的想看到/使用

他们在您的工作!

“#!位置=” 1195.29 61.8729" #!TOP_LEFT = “1195.29 61.8729” #!BOTTOM_RIGHT = “1194.29 62.8729” #!BOUNDING_RECT = “1195.29 61.8729 -1 -1” #!ORDER = “5E + 14” #!FOLLOW_ANCHOR =“真” #!INFO_NODE = “假” #!COLOR = “1,1,0.784314,0.196078” #!SIZE_POLICY = “8” #!COMMENT_TYPE = “常规” #!ANCHORED_NODE = “8” #!/>#!

特点在键值对

找不到

“#!位置=” 1204.96 -1287.91" #!TOP_LEFT = “1204.96 -1287.91” #!BOTTOM_RIGHT = “1203.96 -1286.91” #!BOUNDING_RECT = “1204.96 -1287.91 -1 -1” #!ORDER = “5E + 14” #! FOLLOW_ANCHOR="true" #! INFO_NODE="false" #! COLOUR="1,1,0.784314,0.196078" #! SIZE_POLICY="8" #! COMMENT_TYPE="REGULAR" #! ANCHORED_NODE="12" #! /> #!

您可以设置键和值

列表属性参数的任何

指数(这里0被选择)。

变压器将弄清楚

你实际上指的是整个

列表(例如kml_data {}。名称,而不是

kml_data的{0}。名称)

“#!位置=” 369.391 157.874" #!TOP_LEFT = “369.391 157.874” #!BOTTOM_RIGHT = “368.391 158.874” #!BOUNDING_RECT = “369.391 157.874 -1 -1” #!ORDER = “5E + 14” #!FOLLOW_ANCHOR =“真” #!INFO_NODE = “假” #!COLOR = “1,1,0.784314,0.196078” #!SIZE_POLICY = “8” #!COMMENT_TYPE = “规则的” #!ANCHORED_NODE = “5” #!/>#! #!
#! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #!
FME_PYTHON_VERSION 27 GUI忽略SourceDataset_OGCKML_1,OGCKML_IN_KML21_LOG_VERBOSE_OGCKML_1,OGCKML_IN_KML21_RASTER_READ_MODE_OGCKML_1,OGCKML_IN_KML21_SCAN_SCHEMA_OGCKML_1,OGCKML_IN_KML21_FAIL_ON_NETWORK_ERROR_OGCKML_1,OGCKML_IN_KML21_DELETE_DOWNLOADED_FILES_OGCKML_1,OGCKML_IN_KML21_TRAVERSE_NETWORKLINKS_OGCKML_1,OGCKML_IN_KML21_MAX_NETWORKLINK_TRAVERSAL_DEPTH_OGCKML_1,OGCKML_IN_KML21_DATASET_ENCODING_OGCKML_1,OGCKML_IN_KML21_MOVE_TO_KML_WORLD_COORDSYS_OGCKML_1,OGCKML_IN_KML21_APPLY_MODEL_TRANSFORMS_OGCKML_1,OGCKML_IN_EXPOSE_ATTRS_GROUP_OGCKML_1,OGCKML_IN_SEARCH_ENVELOPE_MINX_OGCKML_1,OGCKML_IN_SEARCH_ENVELOPE_MINY_OGCKML_1,OGCKML_IN_SEARCH_ENVELOPE_MAXX_OGCKML_1,OGCKML_IN_SEARCH_ENVELOPE_MAXY_OGCKML_1,OGCKML_IN_SEARCH_ENVELOPE_COORDINATE_SYSTEM_OGCKML_1,OGCKML_IN_CLIP_TO_ENVELOPE_OGCKML_1,OGCKML_IN_NETWORK_AUTHENTICATION_OGCKML_1 DEFAULT_MACRO SourceDataset_OGCKML $(FME_MF_DIR)8684前哨-1b-MP-20170502t191500-20170505t191500.kml GUI FILE_OR_URL SourceDataset_OGCKML KML_Files(* KML。*.kmz)|*.kml;*.kmz|All_Files(*)|* Source Google KML File or URL: INCLUDE [ if {{$(SourceDataset_OGCKML)} == {}} { puts_real {Parameter 'SourceDataset_OGCKML' must be given a value.};出口1;};]#!START_HEADER#!START_WB_HEADER READER_TYPE OGCKML READER_KEYWORD OGCKML_1 READER_GEN_DIRECTIVES NETWORK_AUTHENTICATION ,, KML21_MOVE_TO_KML_WORLD_COORDSYS,是的,KML21_TRAVERSE_NETWORKLINKS,所有,KML21_RASTER_READ_MODE,地面叠加层,KML21_LOG_VERBOSE,不,EXPOSE_ATTRS_GROUP,FME_DISCLOSURE_OPEN,SEARCH_ENVELOPE_MAXX,0,KML21_APPLY_MODEL_TRANSFORMS,不,SEARCH_ENVELOPE_MAXY,0,SEARCH_ENVELOPE_COORDINATE_SYSTEM ,, CLIP_TO_ENVELOPE,NO,KML21_SCAN_SCHEMA,是的,KML21_MAX_NETWORKLINK_TRAVERSAL_DEPTH,5,_MERGE_SCHEMAS,YES,USE_SEARCH_ENVELOPE,NO,SEARCH_ENVELOPE_MINX,0,SEARCH_ENVELOPE_MINY,0,KML21_FAIL_ON_NETWORK_ERROR,否KML21_DELETE_DOWNLOADED_FILES,YES,OGCKML_EXPOSE_FORMAT_ATTRS,kml_data 。显示名称 kml_buffer kml_data .display_name_raw_text kml_buffer kml_data 。名称 kml_buffer kml_data 。值 kml_buffer kml_extended_data_xml kml_buffer,KML21_DATASET_ENCODING,WRITER_TYPE NULL WRITER_KEYWORD NULL_DEST NULL_DEST_DATASET空#!END_WB_HEADER#!START_WB_HEADER MACRO WB_KEYWORD “OGCKML_1” #!END_WB_HEADER#!START_SOURCE_HEADER OGCKML OGCKML_1#从生成此映射文件的数据集:#!END_SOURCE_HEADER#!START_WB_HEADER DEFAULT_MACRO SourceDataset有[如果{{$(SourceDataset)}!= “”} {\ {放DEFAULT_MACRO SourceDataset_OGCKML_1 $(SourceDataset)} \}]#!END_WB_HEADER#!start_source_header ogckml ogckml_1 default_macro sourcedataset_ogckml_1$(sourcedataset_ogckml)gui文件_或_url sourcedataset_ogckml_1 kml_文件(.kml;*.kmz)*.kml;*.kmz所有所有所有所有所有所有所有*源google-kml文件或url:default_kml21_kml21_登录_verbose_ogckml_1 no ogckml_1_kml21_ogckml_1_kml21_kml21_kml21_kml21_kml21_kml21_logckml_kml21_kml21_kml21_ogckml_根根根根根根根根根根根根根根根根根根根根根根根根根根根根根根根根根根根根u kml21_raster_read_mode_ogckml_1 groundoverlay ogckml_1_kml21_raster_read_模式“$(ogckml\u-kml21_-graster\u-graster\u-read\u-ogckml\u-ogckml\u-kml21_-graster\u-graster\u-read\u-ogckml\u-ogckml\u-ogckml\u-ogckml\u-kml21_-kml21_-kml21_-kml21_-graster\u-graster\u-kml21_-graster\u-graster\u-grascml\u-ogckml\u-kml21_-kml21_-graster\u-ogckml\u-ogckml\u-ogckml\u-kml21_-kml21_-graster\u-1)“gui choice ogckml_in_kml21_scan_schema_ogckml_1 yes%no scan schema:在网络上的网络上的故障,网络上的故障,网络上的故障,网络上的故障,网络上的故障,网络上的故障,网络上的故障,网络上的故障,网络上的故障,网络上的故障,网络上的故障,网络上的故障,网络上的故障,网络上的故障,网络上的故障,网络上的故障,网络上的故障,网络上的故障,网络上的故障,网络上的故障,网络上的故障,网络上的故障,网络上的故障,网络上的故障,网络上的故障,网络上的故障,网络上的故障,网络上的故障,网络上的故障,网络上的故障,网络上的故障,网络上的故障,网络上的故障,网络上的故障,网络上的故障,网络上的故障,网络上的故障,网络上的故障,网络上的故障,网络上_delete_downloaded_files_ogckml_1是ogckml_1_kml21_delete_downloaded_文件“$(ogckml\u-kml21中的ogckml\u-kml21中的ogckml\u-kml21中的ogckml\u-kml21中的ogckml\u-kml21中的ogckml\u下载的下载的下载的下载的文件”gui选择ogckml\u-kml21中的ogckml\u-kml21中的默认ogu宏ogckml\u-kml21中的网络链接“$(ogckml\u-kml21中的ogckml\u-ogckml.1所有ogckml\u-kml21中的所有ogckml\u-kml21中的网络链接“$(ogckml\u-kml21中的ogckml\u-kml21中的ogckml\u-kml21中“gui可选选项OGCKML\u在KML21\u导线网中的\u网络链接\u OGCKML\u 1没有%Local%所有导线网中的%Local%所有导线网链接:默认值;宏OGCKML\u在KML21\u最大网络链接\u导线网中的深度\u OGCKML\u 1 5 OGCKML\u 1.KML21\u最大网络链接\u网络链接遍历深度“$(OGCKML\u在KML21\u最大网络链接\u最大网络链接\u最大网络链接遍历深度\u OGCKML\u 1)”GUI可选整数OGCKML\u在\u中的可选整数。u KML21_MAX_NETWORKLINK_TRAVERSAL_DEPTH_OGCKML_1最大网络链接遍历深度:Debug TraceOkCKMLIONKM2121DataStEnCOCOMLIGOGKMLY1 OGCKMLY1KML21A数据集编码“$(OGCKMLIN KML21A DataSet EngCKMLY1)”GUI可选编码OGCKMLYNIN KM2121DataSCONTION OGCKMLY1*力数据集编码:Debug TrimeOgCKMLIIN in KML21MyVytotoKMLYWorksWorordSoordSysOGCKMLY1Ogckml\u 1.kml21秬移动到世界上的任何一个Kmll秬移动到世界上的任何一个Kmll秬移动到世界上的任何一个Kmll秬移动到世界上的任何一个Kml21秬移动到世界上的任何一个Kmll秬移动到世界上的任何一个Kmll秬移动到世界坐标系是否移动到世界坐标系是否移动到世界坐标系是否移动到世界坐标系是否移动到世界坐标系是否移动到世界坐标系是否移动到世界坐标系:默认宏Ogckml kml21 kml21 kml21 kml21_移动到全球坐标系是否应用模型进行变换。没有ogckml_1_kml21_apply_model_转换“$(ogckml\u-kml21中的ogckml\u-kml21中的应用程序的应用程序的应用程序的应用程序的应用程序的应用程序的模型的应用程序的应用程序的应用程序的ogckml\u-ogckml\u 1是%否应用程序的转换的模型:默认的应用程序的应用程序的应用程序的应用程序的应用程序的应用程序的应用程序的应用程序的模型:默认的应用程序的宏的ogckml\u在公开的组的组的公开的ogckml\u 1公开的ogckml\u 1公开的公开的ogckml\u公开的组”$(ogckml\u公开的ogckml\u公开的组的公开的组的公开的ogckml\u组的公开的ogckml\u组的公开的ogckml\u 1)“图形用户界面披露组招数公开的招数公开的招数公开的招数公开的招数公开的招数公开的招数公开的招数公开的招数公开的招数公开的招数公开的招数公开的招数公开的招数公开的招数公开的招数公开的招数公开的招数公开的招数公开的招数公开的招数公开的招数公开的招数公开的招数公开的招数公开的招数公开的招数公开的招数公开的招数公开的招数公开的招数公开的招数公开的招数公开的招数公开的招数公开的招数公开的招数公开的招数公开的招数公开的招数公开的招数公开的招数公开的招数公开的招数公开的招数公开的招数公开的招数公开的招数公开的招数公开的招数公开的招=default\u宏OGCKML_IN_SEARCH_ENVELOPE_MINX_OGCKML_1 0 OGCKML_1_SEARCH_ENVELOPE "$(OGCKML_IN_SEARCH_ENVELOPE_MINX_OGCKML_1)" GUI OPTIONAL FLOAT OGCKML_IN_SEARCH_ENVELOPE_MINX_OGCKML_1 Minimum X: # =========================================================================== DEFAULT_MACRO OGCKML_IN_SEARCH_ENVELOPE_MINY_OGCKML_1 0 OGCKML_1_SEARCH_ENVELOPE “$(OGCKML.OGCKML.ou IN_SEARCH_MINY_OGCKML.1)”GUI可选浮动OGCKML.ou IN_SEARCH_MINY_OGCKML.OGCKML.1最小Y:353535;;;=============================================================================================================================SEARCH_ENVELOPE_MAXX_OGCKML_10 OGCKML_1_SEARCH_ENVELOPE“$(OGCKML_IN_SEARCH_ENVELOPE_MAXX_OGCKML_1)”图形用户界面可选浮动最大的x:0。一个又一个又一个又一个又一个又一个又一个又一个又一个又一个又一个又一个又一个又一个又一个又一个又一个又一个又一个又一个又一个又一个又一个又一个又一个又一个又一个又一个又一个又一个又一个又一个又一个又一个又一个又一个又一个又一个又一个又一个又一个又一个又一个又一个又一个又一个又一个又一个又一个又一个又一个又一个又一个又一个又一个又一个又一个又一个又一个又一个又一个又一个又一个又一个又一个又一个又一个的rdsys OGCKML_IN_SEARCH_ENVELOPE_COORDINATE_SYSTEM_OGCKML_1 SEARCH ENVELOPE坐标系:#现在我们有了一个软剪辑,可以像本地空间索引一样,重新引入要封装的剪辑作为用户的选项。与现有数据库阅读器相比,我们对Debug TimeOrgMLMLIN、CypLi to TyEclipse OGCKML1进行了仿真,没有OGCKMLY1Lcliptotox信封“$(OgCKMLIN Icliclipto-EXCKELMLY1)”GUI可选复选框OGCKMLY-IO-clipIto-EXECONEL OGCKMLY1:是的%-NO剪辑搜索信封值得关注的是,这一点对于对于对于对于对于对于对于对于对于对于对于对于对于对于对于对于对于对于对于对于对于对于对于对于对于对于对于对于对于对于对于对于对于对于对于对于默认的“U macro ogckml”在默认的“U macro ogckml”在默认的“U macro macro ogckml”在默认的情况下,网络中的“U网络中的ogckml”在默认的情况下,网络中的ogckml.ogckml.1 ogckml.1网络中的“U网络中的ogckml.ogckml.1网络中的ogckml.1网络中的ogckml.1网络中的ogckml.1网络中的ogckml.1网络中的ogckml.6网络中的ogckml.1网络中的ogckml.1网络中的ogckml.1网络身份验证“ogckml”“1 container%group%container”“title%”网络网络身份验证身份验证%n类型%n%n网络身份验证身份验证身份验证%n类型%n网络身份验证身份验证身份验证身份验证身份验证身份验证身份验证身份验证身份验证身份验证身份验证身份验证身份验证身份验证身份验证身份验证身份验证身份验证身份验证身份验证身份验证身份验证身份验证身份验证身份验证身份验证身份验证身份验证身份验证身份验证身份验证身份验证身份验证身份度度度度度度度度度度度度度度度度度度度度度度度度度度度度度度度度度度度度度度度度度度度度度度度度度度度度度度度度度度度度度度度度度度度度度度度度度度度度度度度度度度度度度度度度度度度度度度度度度度度度度度度度度度度度度1)“ogckml_1_dataset”$(sourcedataset_ogckml_1)!END_SOURCE_HEADER#!开始_WB_HEADER#!END_WB_HEADER#!END U HEADER LOG_FILENAME“$(FME_MF_DIR)example LKVPE.LOG”LOG_APPEND NO LOG_MAX_FEATURES 200 LOG_MAX_RECORDED_FEATURES 200 FME_REPROJECTION_ENGINE FME FME_IMPLICIT_CSMAP_REPROJECTION_MODE Auto FME_GEOMETRY_HANDLING Enhanced FME STROKE_MAX_DEVIATION 0 LOG_FILTER_MASK-1 DEFAULT_MACRO DATASET_KEYWORD_1 OGCKML#-------------------------------------------------------------------------OGCKML_1_READER_META_ATTRIBUTES fme_feature_35;type_359;-----------------------------------MULTI_READER_CONTINUE_ON_359;READER_FAILURE No_359;-----------------------------------宏工作区名称-------------------------------------------包括[{[FiNe]存在Env(fMeEthMeP)]和[文件[目录$Env(fMeEnTeM])}{SETGVisalIZETEMSPE$Env(FMEXTEMP)} ELSIF如果{[FIN存在Env(TEMP)] & [文件是目录$Env(TEMP)] }{SETGVisalIZETEMPP $ Env(TEMP)}示例LKVPE宏FMEXVIEWRYAPAPFMEDATAelseif{$tcl_platform(platform)=“unix”}{设置gvisualizertemp“/tmp”}否则{设置gvisualizertemp c:};regsub-all{[,&]}{$(工作区名称)}{{}wsname;设置gvisualizertemp$gvisualizertemp/${wsname}uu[时钟格式[时钟秒]-格式%h%m%s];放置“宏工作区温度目录$gvisualizertemp”;宏可视化工具功能文件$(工作区温度目录)/inspector.ffs宏可视化工具模式文件$(工作区温度目录)/inspector.fsc宏可视化工具创建空间索引是---FaskYyDeF*TracePrimeFuturyNo.No.TyrdPayPARMY评估单程多读读数关键字OgCKMLY1输入特征OGCKML OGCKML1::PrimeMaCK到FMEGNANG:-------------------------------------------------------------------------工厂定义*TeeFactory工厂名称“Placemark(OGCKML_1)Splitter”输入功能_TYPE Placemark输出功能_TYPE Placemark_OGCKML_1默认_宏WB_CURRENTŠCONTEXT艁-------工厂定义*TeeFactory工厂名称“ListKeyValuePairexTractor输入采集器”输入功能“类型PlaceMark”输入功能“OgckML”输出功能“类型ListKeyValuePairexTractor”输入宏ListKeyValuePairexTractor”工作区名称ListKeyValuePairexTractor宏$(ListKeyValuePairexTractor)工作区名称“ListKeyValuePairexTractor宏$”(ListKeyValuePairexTractor)$(ListKyValueApExxTraceTrWorkWorkSoopeEngName).Tyror RealGyGROUP $(ListKyValueApExxTraceTrWorkWorkSoopeEngName).yyPosikOrthPosi宏$(ListKyValueApExxTracTrWorkWorkStudio)No.KyKyAtTr.KMLyDATA { 0 } .Name宏$(ListKyValueApExxTracTrWorkWorkStudioName)y.ValAtAutkMLyDATA { 0 } .值宏$(ListKeyValuePairExtractor_WORKSPACE_NAME)u ATTR_CONFLICT_RES 1 INCLUDE_CUSTOM_TRANSFORMER_VER ListKeyValuePairExtractor:1 FACTORY_DEF*TeeFactory FACTORY_NAME“ListKeyValuePairExtractor Output Renamer/Nuker”输入功能_TYPE ListKeyValuePairExtractor_Output Output功能_TYPE ListKeyValuePairExtractor_Output FACTORY_DEF*TeeFactory工厂名称“ListKeyValuePairexTracker 输出重命名器/Nuker“输入特性”类型ListKeyValuePairexTracker_ 输出特性_ #------------------------------------------------------假设已经设置并创建了工作区临时目录。请参阅controldefs.cpp-controldefs::writevisualizertempdir default_macro workspace_temp_dir include[set grpbyattrs{};如果{[string length$grpByAttrs]>0}{if{[string first”@EvaluateExpression“$grpByAttrs]==0}{将“宏CATMAC”设置为“$grpByAttrs”;}否则{设置catter';设置逗号“;的foreach ATTR $ {grpByAttrs设置catter “$ catter $ @逗号值(\” $ ATTR \ “)”;设置逗号 “_”;};提出 “宏观CATMAC _ @:连接($ catter)”;}}其他{提出 “宏观CATMAC”;};设置sa亚搏在线feName “[regsub -all {[^ A-ZA-Z0-9]} {拒绝} _] _ [EXPR轮(RAND()* 1000000)] _ [时钟点击-milliseconds]”;提出 “宏观SAFE_F亚搏在线FS_NAME $ safeName”;]#作出这样的FFS文件将住在临时目录中。FACTORY_DEF * CreationFactory FACTORY_NAME Rejected_DirCreator输出FEATURE_TYPE __nukeme__ @ TCL2( “捉{文件的mkdir {$(WORKSPACE_TEMP_DIR)}}”)FACTORY_DEF * TeeFactory FACTORY_NAME Rejected_DirCreatorCleanerUpper INPUT FEATURE_TYPE __nukeme__#发送光栅,点云和载体功能下降不同的路径准备#他们 viewing FACTORY_DEF * TestFactory FACTORY_NAME Rejected_FeatureDirector INPUT FEATURE_TYPE ListKeyValuePairExtractor_ 测试与fme_type == “fme_raster” 输出失败FEATURE_TYPE Rejected___NotRasterFeatures___输出PASSED FEATURE_TYPE Rejected___RasterFeatures___ FACTORY_DEF * TestFactory中FACTORY_NAME Rejected___FeatureDirector1 INPUT FEATURE_TYPE Rejected___NotRasterFeatures___测试与fme_type == “fme_point_cloud” 过去的输出失败FEATURE_TYPE Rejected___VectorFeatures___输出FEATURE_TYPE Rejected___PointCloudFeatures___#矢量要素可以简单地让他们的颜色覆盖FACTORY_DEF * TeeFactory FACTORY_NAME Rejected_VectorSetterUpper INPUT FEATURE_TYPE Rejected___VectorFeatures___ OUTPUT FEATURE_TYPE __viewme__ # Point Cloud Features Might Need to be thinned # Note that we don't call the ThinPointCloud function directly, but rather # do it through TCL.这应该允许这种变压器具有#桌面授权使用,即使ThinPointCloud需要专业。TCL2 PROC Rejected_61384898_14c4_4401_9c9b_f2c580c35f7d0_thinPointCloud {} {如果{[串等于{NO_THINNING} {KEEPNPOINT}]} {FME_Execute ThinPointCloud NO_THINNING “\” \ “”;} elseif的{[串等于{NO_THINNING} {MAXNUMPOINTS}]} {FME_Execute ThinPointCloud NO_THINNING “\” \ “”;} elseif的{[串等于{NO_THINNING} {FIRSTNPOINTS}]} {FME_Execute ThinPointCloud NO_THINNING “\” \ “”;} elseif的{[串等于{NO_THINNING} {LASTNPOINTS}]} {FME_Execute ThinPointCloud NO_THINNING “\” \ “”;};} FACTORY_DEF * TeeFactory FACTORY_NAME Rejected___PointCloudThinner INPUT FEATURE_TYPE Rejected___PointCloudFeatures___ OUTPUT FEATURE_TYPE __viewme__ @ TCL2( “Rejected_61384898_14c4_4401_9c9b_f2c580c35f7d0_thinPointCloud”)TCL2 PROC Rejected_61384898_14c4_4401_9c9b_f2c580c35f7d0_prepareRaster {subsetStartRow subsetNumRows subsetStartCol subsetNumCols} {设定useDI [字符串等于-nocase {$(FME_VIEWER_APP)} {fmedatainspector}];如果{$ useDI!} {FME_Execute ApplyRasterRotation双线性;};设置doResample [字符串等于{NoReduction} {重新取样}];设置doSubset [字符串等于{NoReduction} {子集}];集doBounds [字符串等于{NoReduction} {BoundingBoxOnly}];如果{$ doBounds} {FME_Execute GeometryType fme_polygon;} {ELSEIF $ doResample || $ do子集}{set comment {First,我们需要给所有属性加上前缀。这样做是因为我们要调用@RasterProperties,我们要确保它不会覆盖所有现有属性。};设置kAttrPrefix “”;集allNames [FME_AttributeNames];的foreach使用oldName $ {allNames设置了newName $ kAttrPrefix;追加了newName $使用oldName;FME_RenameAttribute $ $了newName使用oldName;};FME_Execute RasterProperties光栅;如果{$ doResample} {集oldNumCols [FME_GetAttribute _num_columns];设置oldNumRows [FME_GetAttribute _num_rows];设置oldSpacingX [FME_GetAttribute _spacing_x];设置oldSpacingY [FME_GetAttribute _spacing_y];设置kMinNumCells 32;设置kMaxNumCells 512;集评论{我们只会重新取样若有两个尺寸比最低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} {设定newSpacingX [EXPR 1.0 * $ oldNumCols * $ oldSpacingX / $ kMinNumCells];设置newSpacingY [EXPR 1.0 * $ newSpacingX / $ oldSpacingX * $ oldSpacingY];};}否则{集评论{这是与上述相同的情况下,除了行列数的作用是相反的。};设置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最近邻;};} {ELSEIF $ doSubset} {集评论{获取一些字符串,可能是属性或常量的值。需要注意的是,我们通过在我们使用属性前缀,因为如果一个人变成是一个属性,它实际上不会字符串中的确切名称(因为我们上面更名为我们所有的属性)。};集rasterNumRows [FME_GetAttribute _num_rows];设置rasterNumCols [FME_GetAttribute _num_columns];集评论{只做子集,如果指定起始位置实际上是光栅内。};如果{$ subsetStartRow <$ rasterNumRows && $ subsetStartCol <$ rasterNumCols} {集评论{现在绑定的子集光栅的大小,因此我们不创建填充。};如果{[EXPR $ subsetStartRow + $ subsetNumRows]> $ rasterNumRows} {集subsetNumRows [EXPR $ rasterNumRows - $ subsetStartRow];};如果{[EXPR $ subsetStartCol + $ subsetNumCols]> $ rasterNumCols} {集subsetNumCols [EXPR $ rasterNumCols - $ subsetStartCol];};FME_Execute SubsetRaster $ subsetStartRow $ subsetNumRows $ subsetStartCol $ subsetNumCols;};};集评论{由@RasterProperties删除所有添加的属性和真实属性,去掉前缀。我们假设他们都开始用下划线。};FME_Execute RemoveAttributes fme_regexp_match {^ _};的foreach使用oldName $ {allNames设置了newName $ kAttrPrefix;追加了newName $使用oldName;FME_RenameAttribute $使用oldName $了newName;};};} FACTORY_DEF * TeeFactory FACTORY_NAME Rejected_RasterSetterUpper INPUT FEATURE_TYPE Rejected___RasterFeatures___ OUTPUT FEATURE_TYPE __viewme__ @ TCL2(“Rejected_61384898_14c4_4401_9c9b_f2c580c35f7d0_prepareRaster { } { } { } { }“)#现在将所有功能集成在录像机,改变他们#功能类型变压器的名字,让他们查看很好#Rejected_61384898_14c4_4401_9c9b_f2c580c35f7d0_VIS_FEAT_TYPE改变特征类型的特征#正在显现。DEFAULT_MACRO Rejected_61384898_14c4_4401_9c9b_f2c580c35f7d0_VIS_FEAT_TYPE拒绝$(CATMAC)DEFAULT_MACRO VISUALIZER_FEATURE_FILE $(WORKSPACE_TEMP_DIR)/ $亚搏在线(SAFE_FFS_NAME).ffs DEFAULT_MACRO VISUALIZER_CREATE_SPATIAL_INDEX NO#[PR#45549]数据Inspector将限制功能#它读取WIN32的最大数量,所以我们会相应地限制#特征的数量,我们在这里记录使用 MAX_FEATURES_TO_RECORD directive. FACTORY_DEF * RecorderFactory FACTORY_NAME Rejected_Recorder INPUT FEATURE_TYPE __viewme__ _wb_termination_feature Yes @FeatureType(TERMINATOR_@Value(_wb_termination_xformer)) INPUT FEATURE_TYPE __viewme__ @FeatureType($(Rejected_61384898_14c4_4401_9c9b_f2c580c35f7d0_VIS_FEAT_TYPE)) FEATURE_FILE "$(VISUALIZER_FEATURE_FILE)" CREATE_SPATIAL_INDEX "$(VISUALIZER_CREATE_SPATIAL_INDEX)" INSPECTOR "$(VISUALIZER_CREATE_SPATIAL_INDEX)" FSC_SCHEMA _error,varchar 255 模式录制STORE_SCANNED_METADATA RECORD_DIRECTLY_TO_DISK是MAX_FEATURES_TO_RECORD WIN32 2000000#------------------------------------------------------------------------- FACTORY_DEF * TeeFactory FACTORY_NAME AttributeExposer INPUT FEATURE_TYPE ListKeyValuePairExtractor_Output OUTPUT FEATURE_TYPE AttributeExposer_OUTPUT # ------------------------------------------------------------------------- # Assumption is that the workspace temp dir has been already set and created.请参阅controldefs.cpp-controldefs::writevisualizertempdir default_macro workspace_temp_dir include[set grpbyattrs{};如果{[string length$grpByAttrs]>0}{if{[string first”@EvaluateExpression“$grpByAttrs]==0}{将“宏CATMAC”设置为“$grpByAttrs”;}否则{设置catter';设置逗号“;的foreach ATTR $ {grpByAttrs设置catter “$ catter $ @逗号值(\” $ ATTR \ “)”;设置逗号 “_”;};提出 “宏观CATMAC _ @:连接($ catter)”;}}其他{提出 “宏观CATMAC”;};设置sa亚搏在线feName “[regsub -all {[^ A-ZA-Z0-9]} {输出} _] _ [EXPR轮(RAND()* 1000000)] _ [时钟点击-milliseconds]”;提出 “宏观SAFE_F亚搏在线FS_NAME $ safeName”;]#作出这样的FFS文件将住在临时目录中。(“catch {file mkdir {$(WORKSPACE_TEMP_DIR)}}”)point cloud and vector features down different paths to prepare # them for viewing FACTORY_DEF * TestFactory FACTORY_NAME Output_FeatureDirector INPUT FEATURE_TYPE AttributeExposer_OUTPUT TEST &fme_type == "fme_raster" OUTPUT FAILED FEATURE_TYPE Output___NotRasterFeatures___ OUTPUT PASSED FEATURE_TYPE Output___RasterFeatures___ FACTORY_DEF * TestFactory FACTORY_NAME Output___FeatureDirector1 INPUT FEATURE_TYPE Output___NotRasterFeatures___ TEST &fme_type == "fme_point_cloud" OUTPUT FAILED FEATURE_TYPE Output___VectorFeatures___ OUTPUT PASSED FEATURE_TYPE Output___PointCloudFeatures___ # Vector features simply may get their colors overridden FACTORY_DEF * TeeFactory FACTORY_NAME Output_VectorSetterUpper INPUT FEATURE_TYPE Output___VectorFeatures___ OUTPUT FEATURE_TYPE __viewme__ # Point Cloud Features Might Need to be thinned # Note that we don't call the ThinPointCloud function directly, but rather # do it through TCL.这应该允许这种变压器具有#桌面授权使用,即使ThinPointCloud需要专业。Tcl2 proc Output_ba5a684b_6d5f_4594_8a52_38b6fa691ade2_thinPointCloud {} {if {[string equal {no_细化}{KEEPNPOINT}]} {FME_Execute ThinPointCloud no_细化“\” \ “”;} elseif的{[串等于{NO_THINNING} {MAXNUMPOINTS}]} {FME_Execute ThinPointCloud NO_THINNING “\” \ “”;} elseif的{[串等于{NO_THINNING} {FIRSTNPOINTS}]} {FME_Execute ThinPointCloud NO_THINNING “\” \ “”;} elseif的{[串等于{NO_THINNING} {LASTNPOINTS}]} {FME_Execute ThinPointCloud NO_THINNING “\” \ “”;};}FACTORY_DEF * TeeFactory FACTORY_NAME Output___PointCloudThinner输入FEATURE_TYPE Output___PointCloudFeatures___输出FEATURE_TYPE __viewme__ @Tcl2 (Output_ba5a684b_6d5f_4594_8a52_38b6fa691ade2_thinPointCloud) Tcl2 proc Output_ba5a684b_6d5f_4594_8a52_38b6fa691ade2_prepareRaster {subsetStartRow subsetNumRows subsetStartCol subsetNumCols}{设置useDI(字符串相等查看nocase {$ (FME_VIEWER_APP)} {fmedatainspector});如果{$ useDI!} {FME_Execute ApplyRasterRotation双线性;};设置doResample [字符串等于{NoReduction} {重新取样}];设置doSubset [字符串等于{NoReduction} {子集}];集doBounds [字符串等于{NoReduction} {BoundingBoxOnly}];如果{$ doBounds} {FME_Execute GeometryType fme_polygon;} {ELSEIF $ doResample || $ do子集}{set comment {First,我们需要给所有属性加上前缀。这样做是因为我们要调用@RasterProperties,我们要确保它不会覆盖所有现有属性。};设置kAttrPrefix “”;集allNames [FME_AttributeNames];的foreach使用oldName $ {allNames设置了newName $ kAttrPrefix;追加了newName $使用oldName;FME_RenameAttribute $ $了newName使用oldName;};FME_Execute RasterProperties光栅;如果{$ doResample} {集oldNumCols [FME_GetAttribute _num_columns];设置oldNumRows [FME_GetAttribute _num_rows];设置oldSpacingX [FME_GetAttribute _spacing_x];设置oldSpacingY [FME_GetAttribute _spacing_y];设置kMinNumCells 32;设置kMaxNumCells 512;集评论{我们只会重新取样若有两个尺寸比最低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} {设定newSpacingX [EXPR 1.0 * $ oldNumCols * $ oldSpacingX / $ kMinNumCells];设置newSpacingY [EXPR 1.0 * $ newSpacingX / $ oldSpacingX * $ oldSpacingY];};}否则{集评论{这是与上述相同的情况下,除了行列数的作用是相反的。};设置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最近邻;};} {ELSEIF $ doSubset} {集评论{获取一些字符串,可能是属性或常量的值。需要注意的是,我们通过在我们使用属性前缀,因为如果一个人变成是一个属性,它实际上不会字符串中的确切名称(因为我们上面更名为我们所有的属性)。};集rasterNumRows [FME_GetAttribute _num_rows];设置rasterNumCols [FME_GetAttribute _num_columns];集评论{只做子集,如果指定起始位置实际上是光栅内。};如果{$ subsetStartRow <$ rasterNumRows && $ subsetStartCol <$ rasterNumCols} {集评论{现在绑定的子集光栅的大小,因此我们不创建填充。};如果{[EXPR $ subsetStartRow + $ subsetNumRows]> $ rasterNumRows} {集subsetNumRows [EXPR $ rasterNumRows - $ subsetStartRow];};如果{[EXPR $ subsetStartCol + $ subsetNumCols]> $ rasterNumCols} {集subsetNumCols [EXPR $ rasterNumCols - $ subsetStartCol];};FME_Execute SubsetRaster $ subsetStartRow $ subsetNumRows $ subsetStartCol $ subsetNumCols;};};集评论{由@RasterProperties删除所有添加的属性和真实属性,去掉前缀。我们假设他们都开始用下划线。};FME_Execute RemoveAttributes fme_regexp_match {^ _};的foreach使用oldName $ {allNames设置了newName $ kAttrPrefix;追加了newName $使用oldName;FME_RenameAttribute $使用oldName $了newName;};};@Tcl2(" output_ba5a684b_6d5f_4594_8a52_38b6fa691ade2_准备者{ } { } { } { 现在将所有特性路由到记录器中,将它们的# feature类型更改为transformer名称,这样它们就可以很好地查看# Output_ba5a684b_6d5f_4594_8a52_38b6fa691ade2_VIS_FEAT_TYPE更改了正在可视化的特性的特性类型#。DEFAULT_MACRO Output_ba5a684b_6d5f_4594_8a52_38b6fa691ade2_VIS_FEAT_TYPE输出$(CATMAC) DEFAULT_MACRO VISUALIZER_FEATURE_FILE $(WORKSPACE_TEMP_DIR)/$(SAFE_亚搏在线FFS_NAME)。ffs DEFAULT_MACRO VISUALIZER_CREATE_SPATIAL_INDEX NO # [PR#45549] The Data Inspector will limit the maximum number of features # it reads on WIN32, so we will correspondingly limit the number of # features we record here using the MAX_FEATURES_TO_RECORD directive. FACTORY_DEF * RecorderFactory FACTORY_NAME Output_Recorder INPUT FEATURE_TYPE __viewme__ _wb_termination_feature Yes @FeatureType(TERMINATOR_@Value(_wb_termination_xformer)) INPUT FEATURE_TYPE __viewme__ @FeatureType($(Output_ba5a684b_6d5f_4594_8a52_38b6fa691ade2_VIS_FEAT_TYPE)) FEATURE_FILE "$(VISUALIZER_FEATURE_FILE)" CREATE_SPATIAL_INDEX "$(VISUALIZER_CREATE_SPATIAL_INDEX)" INSPECTOR "$(VISUALIZER_CREATE_SPATIAL_INDEX)" FSC_SCHEMA DatatakeId,varchar 255 模式,varchar 255 、ObservationDuration varchar 255 、ObservationTimeStart varchar 255 、ObservationTimeStop varchar 255 、OrbitAbsolute varchar 255 、OrbitRelative varchar 255 、两极分化、varchar 255 、SatelliteId varchar 255 片,varchar 255 模式记录STORE_SCANNED_METADATA RECORD_DIRECTLY_TO_DISK是的MAX_FEATURES_TO_RECORD WIN32 2000000 # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - FACTORY_DEF * RoutingFactory FACTORY_NAME“目的地功能类型路由相关器”COMMAND_PARM_EVALUATION SINGLE_PASS输入FEATURE_TYPE * FEATURE_TYPE_ATTRIBUTE __wb_out_feat_type__输出路由FEATURE_TYPE *输出NOT_ROUTED FEATURE_TYPE __nuke_me__ @Tcl2 (“FME_StatMessage 818059 [FME_GetAttributefme_template_feature_type] 818060 818061 fme_warn") # ------------------------------------------------------------------------- FACTORY_DEF * TeeFactory FACTORY_NAME "Final Output Nuker" INPUT FEATURE_TYPE __nuke_me__ # ------------------------------------------------------------------------- FACTORY_DEF * CreationFactory CREATE_AT_END OUTPUT FEATURE_TYPE __NUKEME__ @TCL("if [file exists {$(WORKSPACE_TEMP_DIR)}] {set files [glob -nocomplain -directory {$(WORKSPACE_TEMP_DIR)} -tails *.ffs]; if {[llength $files] == 1} { set theFile {$(WORKSPACE_TEMP_DIR)/}; append theFile [lindex $files 0]; eval FME_Execute System \173\042$(FME_HOME_UNIX)/fmedatainspector\042 --visualizer --single-application --delete-on-close --no-source-prompt -f FFS $theFile & \175; } elseif { [llength $files] == 0 } { catch { file delete -force {$(WORKSPACE_TEMP_DIR)} }; } else { set filesNoExt {}; set lastfile {}; foreach {fileName} [lsort $files] { set fileNoExt [string trimright $fileName {.ffs}]; if [regexp {(.*)_[0-9]*$} $fileNoExt wholething fileNoExtBase] { if { $fileNoExtBase == $lastfile } { continue } }; set lastfile $fileNoExt; lappend filesNoExt $fileNoExt }; eval FME_Execute System \173\042$(FME_HOME_UNIX)/fmedatainspector\042 --visualizer --single-application --delete-on-close --no-source-prompt -d {$(WORKSPACE_TEMP_DIR)} -a ffs -f FFS $filesNoExt & \175; }; }; ") FACTORY_DEF * TeeFactory INPUT FEATURE_TYPE __NUKEME__