span8
span4
这看起来好像很简单,但我不知道怎么做。
我有许多文本文件,每个文件通过列出顶点的坐标来定义一个多边形。我想从坐标列表构建多边形。
通常我会使用VertexCreator来创建点/多边形,但我不知道如何让它遍历可变长度的列表。
一些列表也很长(20+坐标),似乎应该有一个比在系列中添加20+ vertexcreator更简单的方法!
@takashi我从其中一个文件下面贴的样本。这是一个BSB头的一部分,因此包含所有标准BSB的头信息,但BSB读者不读这个数据。因此,我在读它作为一个文本文件。我试图提取该层多边形。
其他方法。
您可以将两个列表转换为一个由两个成员组成的单一结构化列表(例如,“_coord {}。x" and "_coord{}.y") with the AttributeManager (Rename Action), then explode the list (ListExploder), create vertices (VertexCreator), build a line (LineBuilder) and finally close the line to form a polygon (LineCloser).
或者,使用此模板表达式的JSONTemplater创建一个表示多边形的GeoJSON对象。您可以使用GeometryReplacer(几何编码:GeoJSON)将其替换为多边形几何图形。
让xs:美元= fme: get-list-attribute (“x-coord {} .part”)让$ y: = fme: get-list-attribute (“y-coord {} .part”)返回{“类型”:“多边形”、“坐标”:[[我在美元(1 - count ($ x))返回(xs:双($ x [$ i]), xs:双($ y [$ i])], [xs:双($ x [1]), xs:双($ y) [1]]]]}
这里有一个可能的解决方案使用PythonCaller:
def GeneratePolygon(feature): x_coords = [float(x) for x in features . getattribute ('x-coord{}.part')或[]]y_coords = [float(y) for y in features . getattribute ('y-coord{}.part')或[]]feature。addCoordinates (zip (x_coords y_coords))
在PythonCaller之后添加一个LineCloser。
如果它们是有序的,一个线性建设者还不够吗?Group by/connection break属性= fme_feature_type
(确保最后一个coord =当然是第一个coord)如果它们闭合,就会变成多边形。
一些顶点列表可以通过FME自动解析,如果它们符合一些标准,如WKT。
你能在这里发布一个这样的坐标列表的例子吗?
@david_r谢谢你回到我身旁。这里有一个列表:
PLY / 1,54.3671208915,10.1422463646
PLY / 2,54.3700921435,10.1422584956
PLY / 3,54.3700947237,10.1537959675
PLY / 4,54.3693817722,10.1537945973
PLY / 5,54.3693818426,10.1541095477
PLY / 6,54.3688144656,10.1541084576
PLY / 7,54.3688143977,10.1537935091
PLY / 8,54.3671234716,10.1537838354
这实际上是一个BSB文件的元数据的一部分。在FME的BSB的读者似乎并不太多的文件拉在属性,所以我在读它作为一个文本文件来访问这些数据,并使用stringsearcher识别这些坐标对。所以,这是有很多的不同是信息的文件的一部分。
©2019安全亚搏在线软件公司法律