哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀!

解码HTTP编码表

由服务返回到XML


这似乎只是必要的

通过这种特殊的服务,但是

不会影响正确的XML响应

“啊!位置= " 1503.14 - 81.8753 " # !TOP_LEFT = " 1503.14 - 81.8753 " # !BOTTOM_RIGHT = " 1502.14 - 82.8753 " # !BOUNDING_RECT="1503.14 81.8753 -1 -1"#!订单=“5E + 14”!FOLLOW_ANCHOR = " true " # !info_node=“false”!colour=“1,1,0.784314,0.192157”!size_policy=“8”!COMMENT_TYPE = "常规" # !锚定的_node=“12”!/ > # !

构建SOAP XML请求

“啊!位置= " 271.785 - -134.002 " # !top_left=“271.785-134.002”!bottom_right=“270.785-133.002”!BOUNDING_RECT="271.785 -134.002 -1 -1"#!订单=“5E + 14”!FOLLOW_ANCHOR = " true " # !info_node=“false”!colour=“1,1,0.784314,0.192157”!size_policy=“8”!COMMENT_TYPE = "常规" # !锚定的_node=“3”!/ > # !

向服务提交请求

“啊!位置= " 878.134 - -134.002 " # !Top_Left=“878.134-134.002”!bottom_right=“877.134-133.002”!bounding瓒rect=“878.134-134.002-1-1”!订单=“5E + 14”!FOLLOW_ANCHOR = " true " # !info_node=“false”!colour=“1,1,0.784314,0.192157”!size_policy=“8”!COMMENT_TYPE = "常规" # !锚定的_node=“5”!/ > # !

将表分割成记录

将列展平为

属性

“啊!position=“2256.27-46.5013”!top_left=“2256.27-46.5013”!BOTTOM_RIGHT = " 2255.27 - -45.5013 " # !BOUNDING_RECT="2256.27 -46.5013 -1 -1"#!订单=“5E + 14”!FOLLOW_ANCHOR = " true " # !info_node=“false”!colour=“1,1,0.784314,0.192157”!size_policy=“8”!COMMENT_TYPE = "常规" # !ANCHORED_NODE = " 16 " # !/ > # ! 哎呀! 哎呀!
哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀! 哎呀!
FME_PYTHON_VERSION 27DEFAULT_MACRO COUNTRY CanadaGUI TEXT COUNTRY:包含[if {{$(COUNTRY)} == {}} {puts_real {Parameter 'COUNTRY' must be given a value.};退出1;};)# !启动头报文!START_WB_HEADERREADER_TYPE NULLREADER_KEYWORD NULL_SOURCENULL_SOURCE_DATASET nullWRITER_TYPE NULLWRITER_KEYWORD NULL_DESTNULL_DEST_DATASET null#!Enth-WbHead头!启动“wb_header”!Enth-WbHead头!end_headerLog_filename“$(fme_mf_dir)soaprequest.log”log_append nolog_max_features 200log_max_recorded_features 200fme_reprojection_engine fme fme_implicit_csmap_reprojection_mode autome_geometry_handling enhancedfme_stroke_max_deviation 0log_filter_mask-1--------------------------------------multi_reader_continue-on-u读卡器_故障否诜诜(fme elseif[信息存在env(temp)]&[文件是目录$env(temp)]设置gvisualizertemp$env(temp)elseif$tcl平台(platform)==“Unix”设置gvisualizertemp“/tmp”否则设置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 {};}宏创建器\u xml not \u activatedmacro creator \u classic not \u activatedmacro creator \u 2d3d 2d \u geometrymacro creator \u coords 包括[如果几何对象=几何对象放置宏创建者XML*]包括[如果几何对象=二维坐标列表放置宏创建者2d3d 2d几何图形放置宏创建器经典]包括[如果几何对象=三维坐标列表放置宏创建器2d3d三维几何将{宏Creator_CLASSIC *}}包含[if{{几何对象}== {2D Min/Max Box}} {set comment{我们需要将最小的COORDS (minX minY maxX maxY)转换为一个完整的多边形坐标列表};设置splitCoords [split [string trim { }]];如果{[llength $splitCoords] > 4} {set trimmedCoords {};foreach item$splitcoords如果$item!=lappend trimmedcoords$项目设置splitcoords$trimmedcoords;};如果{[llength $splitCoords] != 4} {error {Creator: Coordinate list是一个由4个数字组成的以空格分隔的列表,如'minx miny maxx maxy' - ' “无效”};};设置minx[lindex$splitcoords 0];minY [lindex $splitCoords 1];set maxX [lindex $splitCoords 2];set maxY [lindex $splitCoords 3];输入“宏Creator_COORDS $minX $minY $minX $maxY $maxX $maxY $maxX $minY $minX $minY”;输入{宏Creator_2D3D 2D_GEOMETRY};输入{宏Creator_CLASSIC *}}} FACTORY_DEF $(Creator_XML) CreationFactory FACTORY_NAME Creator_XML_Creator CREATE_AT_END no OUTPUT FEATURE_TYPE _____CREATED______ @Geometry(FROM_ENCODED_STRING, xml ? version = 1.0 编码= 乌斯阿斯契 独立的= 没有 几何 维数= 2 几何 )工厂def$(创建者_经典)创意工厂_name创建者_经典_创建者$(创建者d)$(创建者coords)创造_端无输出特征_类型\\\\uuuuuuuuu\\\\\\\\\\\\\\\\\\\\\\\\\实例“output feature_type creator_created@tcl2(creator_coordsysremover)@coordsys()fme_feature_type creator factory_def*branchingfactory factory_name”creator_created brancher-1 4“input feature_type creator_created target_factory”$(wb_current_context)_creator_branching_target“输出传递的功能”_type*@remove属性(“creator_created brancher-1 4”.branchingfactory.count)--------------------------------------factory_def*teefactory factory_name”$(wb_current_context)_creator_branch_target“输入功能”_type*输出功能\u type*---------------------------------------------------------------factory_def*xmlmtemplaterFactory工厂名xmlmtemplater输入控制_feature feature_type creator_创建输入数据_feature feature_type xmlmtemplater_datafeatures result_attr_soap_请求输出_xml_header yes bucket_attr_name_uxml_templater_bucket_uuuuu control_template_expr@evaluateexpression(fdiv,string_encoded, xml ? version = 1.0 编码= UTF-8 SOAP12:信封 xmlns:xsi = http: www. W3.ORG 2001 XMLSchema-instance xMLNs:xSD= http: www. W3.ORG 2001 XMLSchema XMLNS: SOAP12= http: www. W3.ORG 二千零三 05 soap信封 soap12:身体 getcitiesbycountry(getcitiesbycountry) xmlns = http: www.webserviceX.NET 国家名称 (国家编码)美元 国家名称 getcitiesbycountry(getcitiesbycountry) soap12:身体 SOAP12:信封 ,xmlmtemplater)输出xml_文档功能\u类型xmlmtemplater_输出-------------------------------------------------------------------------------工厂定义*http factory工厂名称httpcaller输入功能\u类型xmlmtemplater_输出目标\u url“http: www.webservicex.net globalweather.asmx“http_method post save_file no output_文件名” “OUTPUT_DIRECTORY” “FILE_EXTENSION” " TARGET_ATTR "_response_body" FILE_PATH_ATTR " “上传文件” “上传”body@evaluateexpression(fdiv,string_编码, 价值 SOA请求 ,httpcaller)“multipart_upload no upload_content_type”application/soap+xml“combined_multipart_table request_header_table additional_url_parameters auth_username” “AUTH_PASSWORD” “AUTH_METHOD” " TARGET_ATTRIBUTE_ENCODING auto-detect RESPONSE_HEADER_LIST_ATTR "_headers" STATUS_CODE_ATTR "_http_status_code" ERROR_ATTR "_error" CONNECTION_TIMEOUT_LENGTH 60 TRANSFER_TIMEOUT_LENGTH 90 follow_redirecyes VERIFY_SSL_CERTIFICATES Yes NAMED_CONNECTION " " USE_COOKIES无输出输出FEATURE_TYPE HTTPCaller_Output输出被拒绝的FEATURE_TYPE HTTPCaller_ FACTORY_DEF * TeeFactory FACTORY_NAME“HTTPCaller” 输入FEATURE_TYPE HTTPCaller_ 默认_macro_wb_bypass_termination nofactory_def*teefactory factory_name httpcaller_ 输入FEATURE_TYPE HTTPCaller_ 输出失败FEATURE_TYPE * @Abort(编码,电视传真机 输出 拒绝了 特性。 持续 如果 特性 拒绝了 改变 工作空间 参数 拒绝了 功能 处理 继续 翻译 )#———————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————— 价值 _response_body ,textcoder)“输出输出功能”_type textcoder_output诜诜 结构 分离器= 映射空元素= 匹配前缀= 属性 matched-attributes = 基数= + structure-prefix = child-position-attribute = except-expression = ui模式= 基本 matched-ancestor-attributes = 没有输出映射的FEATURE_TYPE XMLFragmenter_FRAGMENTS输出无效的FEATURE_TYPE XMLFragmenter_ DEFAULT_MACRO _WB_BYPASS_TERMINATION NoFACTORY_DEF * TeeFactory FACTORY_NAME XMLFragmenter_ 输入FEATURE_TYPE XMLFragmenter_ 输出失败FEATURE_TYPE * @Abort(编码,XMLFragmenter 输出 拒绝了 特性。 持续 如果 特性 拒绝了 改变 工作空间 参数 拒绝了 功能 处理 继续 翻译 )# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - #假设是工作区临时dir已经设置和创建。参见ControlDefs .cpp - ControlDefs::writeVisualizerTempDirDEFAULT_MACRO WORKSPACE_TEMP_DIRINCLUDE [set grpByAttrs {};如果{[string length $grpByAttrs] > 0} {if {[string first "@EvaluateExpression" $grpByAttrs] == 0} {put "MACRO CATMAC _$grpByAttrs";} else {set catter "";逗号””;foreach attr$grpbyattrs设置catter“$catter$comma@value(\”$attr\“)”;设置逗号“,};放入“macro catmac_@concatenate($catter)”;}} else {put“MACRO CATMAC”;};设置sa亚搏在线fename“[regsub-all[^a-za-z0-9]xmlFormatter uu passed expr round(rand()*1000000)]uu[时钟单击-毫秒]”;输入“宏SAFE_FFS亚搏在线_NAME $safeName”;]#创建ffs文件将位于的临时目录。factory _def*creationFactory _name xmlformater _passed dircreator output feature _type uuukeme uuuuu@tcl2(“catch file mkdir$(workspace _temp”)factory _def*teefactory factory _name xmlformater _passed _dircreator cleanerupper input feature _type uu nuKeme_uuuuuu35;发送光栅,点云和矢量功能沿着不同的路径进行准备,以便查看工厂定义测试工厂名称xmlFormatter已通过功能Director输入功能xmlFragmenter类型xmlFragmenter碎片测试和fme类型=“fme_graster”输出失败功能xmlFormatter类型已通过输出功能xmlfor物质已通过测试工厂名称xml格式化程序已通过输入功能xml格式化程序已通过notrasterfeatures测试D特征uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu利而是通过TCL来实现。这应该允许这个转换器与# Desktop许可证一起使用,即使thinpointcloud需要专业的.tcl2 proc xmlformatter_passed_1cd9cba7_d06f_43f5_af87_b733f0843b140_thinpointcloud if[字符串等于no u稀释keepnpoint]fme_u execute thinpointcloud no u稀释\” \ ";} elseif {[string equals {no_细化}{MAXNUMPOINTS}]} {FME_Execute ThinPointCloud no_细化"\" \ ";} elseif {[string equals {no_细化}{FIRSTNPOINTS}]} {FME_Execute ThinPointCloud no_细化"\" \ ";}elseif[字符串等于无减薄最后一个点]fme执行ThinPointCloud无减薄\” \ ";};@Tcl2(" xmlformatter_passed_1cd9cba7_af87_b843b140_thinpointcloud ")Tcl2 proc XMLFormatter_Passed_1cd9cba7_d06f_43f5_af87_b733f0843b140_prepareRaster {subsetStartRow subsetNumCols} {set useDI [string equal -nocase {$(FME_VIEWER_APP)} {fmedatainspector}];如果!$usedi fme_执行applyrasterrotation双线性;};设置doResample [string = {NoReduction} {Resample}];设置do子集[string = {NoReduction}{子集}];设置多边界[字符串等于noreducation boundingboxonly];if {$doBounds} {FME_Execute GeometryType fme_polygon;} elseif {$doResample || $ do子集}{set comment {First,我们需要给所有属性加上前缀。这是因为我们要调用@RasterProperties,我们要确保它不会覆盖任何现有的属性。};设置kAttrPrefix“。”;设置所有名称[fm_attributename];foreach oldName $allNames{设置newName $kAttrPrefix;添加新名称oldName美元;FME_RenameAttribute新名称oldName美元;};FME_Execute RasterProperties光栅;如果{$doResample} {set 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)} {set newSpacingX 1.0;设置newSpacingY 1.0;如果{$oldNumRows > $oldNumCols} {set comment{如果我们的行比列多,我们需要选择一个将行数减少到我们选择的最大值的间距。};设置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];};}否则设置注释这与上述情况相同,除了行和cols的角色是相反的。};设置newSpacingX [expr 1.0 * $oldNumCols * $oldSpacingX / $kMaxNumCells];设置newspacingy[expr 1.0*$newspacingx/$oldspacingx*$oldspacingy];设置newNumRows [expr $oldNumRows * $oldSpacingY / $newSpacingY];{set newSpacingY [expr 1.0 * $oldNumRows * $oldSpacingY / $kMinNumCells];设置newSpacingX [expr 1.0 * $newSpacingY / $oldSpacingY * $oldSpacingX];};};fme_execute resamplegraster cell_size$newspacingx$newspacingy nearestneighbor;};}elseif$dosubset set comment获取可能是属性或常量的某些字符串的值。注意,我们传入了我们使用的属性前缀,因为如果一个是一个属性,它实际上不会是字符串中的确切名称(因为我们重命名了上面的所有属性)。};设置栅格数行[FME_GetAttribute _num_rows];设置rasternumcols[fm_getattribute_num_columns];set comment{只有当指定的起始位置实际在光栅内时才做子集设置。};如果$subsetStartRow<$rasterNumRows&&$subsetStartCol<$rasterNumCols设置注释现在将子集绑定到光栅的大小,这样我们就不会创建填充。};如果[expr$subsetStartRow+$subsetNumRows]>$rasterNumRows设置subsetNumRows[expr$rasterNumRows-$subsetStartRow];};{set subsetNumCols [expr $rasterNumCols - $subsetStartCol];};FME_Execute SubsetRaster $subsetStartRow $subsetNumRows $subsetStartCol $subsetNumCols;};};set comment{删除@RasterProperties添加的所有属性,并从实际属性中删除前缀。我们假设它们都以下划线开头。};FME_Execute RemoveAttributes fme_regexp_match {^ _};foreach oldName $allNames{设置newName $kAttrPrefix;添加新名称oldName美元;FME_RenameAttribute oldName美元新名称;};};}FACTORY_DEF * TeeFactory FACTORY_NAME XMLFormatter_Passed_RasterSetterUpper INPUT FEATURE_TYPE xmlformatter_passed_rasterfeatures___ OUTPUT FEATURE_TYPE __viewme__ @Tcl2("XMLFormatter_Passed_1cd9cba7_d06f_43f5_af87_b733f0843b140_prepareRaster {" {{ {{ {{ )#现在将所有特性路由到记录器中,将他们的特征类型更改为变压器名称,以便他们能很好地查看XML格式设置器传递的“U 1CD9CBA7 U D06F U 43f5 U AF87 U B73f843B140 U VIS U FEAT”类型更改所可视化特征的特征类型。默认的“U宏XML格式设置器传递的”U 1CD9CBA7 U D06F U 43f5 U AF87 U B73f843f843B140 U VIS U FEAT U类型XML格式设置器传递的美元(Catmacmacmacmacmacmacmacmacmac-xm格式设置器传递的美元(Catmacmacmacmacmacmacmacmacmacmacmacmacmacmacmacmacmacmacmacmacmacmacmac-pass的美元)传递的美元(Catmacmacmacmacmacmacmacmacmac)默认的_宏可视化工具_ f亚搏在线eature_file$(workspace_temp_dir)/$(safe_ffs_name).ffsdefault_macro Visualizer_create_spatial_index no[pr 45549]数据检查器将限制在win32上读取的最大功能数,因此,我们将相应地限制我们在这里记录的功能的数量,使用max-features-to-record指令。factory-def*recorder factory-factory-name-xmlformatter-passed-recorder-input-feature-type-viewme-wb-termination-feature-yes@feature type(terminator-value(wb-termination-xformer))输入功能retype($(xmlformatter_passed_1cd9cba7_d06f_43f5_af87_b733f0843b140_vis_feat_type))feature_file“$(可视化工具_feature_file)”create_spatial_index“$(可视化工具_create_spatial_index)”inspector“$(可视化工具_create_spatial_index)”fsc_schema country,varchar 255 、城市、varchar 255 、xml_fragment varchar 255 、xml_id varchar 255 、xml_matched_element varchar 255 、xml_parent_id varchar 255 、xml_parent_child_pos varchar 255 模式记录存储_扫描的_元数据记录_直接_到_磁盘是最大_功能_到_记录win32 2000000------------------------------------------------------------工厂_def*路由工厂_name“目标功能类型路由相关器”命令_parm_评估单个_pass输入功能_type*功能_type_at属性uwb_out_feat_type_uuuu output routed feature_type*output not_routed feature_type uuu nuke_me_uuuuuuu@tcl2(“FME_statmessage 818059[FME_getattribute FME_template_feature_type]818060 818061 FME_warn”)输入feature uu type uu nuke u me uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu如果{[llength $files] == 1}设置文件{$(WORKSPACE_TEMP_DIR)/};附加文件[lindex$files 0];evalfme_execute System \173\042$(FME_HOME_UNIX)/fmedatainspector\042—visualizer—单应用程序—关闭时删除—无源提示—f FFS $theFile & \175;}elseif[长度$files]==0 catch文件删除-强制$(工作区临时目录)} else {set filesNoExt {};设置lastfile { };foreach {fileName} [lsort $files] {set fileNoExt [string trimright $fileName {.ffs}];如果[regexp {(.*)_[0-9]*$} $fileNoExt wholething fileNoExtBase] {if {$fileNoExtBase == $lastfile} {continue}};设置lastfile fileNoExt美元;lappend filesnext$filenoext_evalfme_execute System \173\042$(FME_HOME_UNIX)/fmedatainspector\042—visualizer—单应用程序—关闭时删除—无源提示—d {$(WORKSPACE_TEMP_DIR)} -a ffs -f ffs $filesNoExt & \175;};};“)工厂定义*teefactory输入功能\u类型\u Nukeme__