0

我正在尝试从文件中读取一些地理日期。我在java中使用geotools包。我有可用的地理数据,如 kml、gml 和 .shp,这些都是相当大的文件。那些来自外部的 bron 并且格式正确。

当我想阅读工具时,GeoTools 使用 JTS。我也尝试直接使用 JTS,但我收到了相同的错误消息。我得到的错误是:

java.lang.IllegalArgumentException: Number of points must be 0 or >3
    at com.vividsolutions.jts.geom.LinearRing.validateConstruction(LinearRing.java:98)
    at com.vividsolutions.jts.geom.LinearRing.<init>(LinearRing.java:90)
    at com.vividsolutions.jts.geom.GeometryFactory.createLinearRing(GeometryFactory.java:324)
    at com.vividsolutions.jts.geom.GeometryFactory.createLinearRing(GeometryFactory.java:314)

我在文件中途收到此错误。我手动检查了所有文件:所有“线性环”都超过三个点。我尝试读取哪个文件也没有关系。

代码片段:

File file = new File(bwkFilePath);
Map map = new HashMap();
map.put("url", file.toURL());
DataStore dataStore = DataStoreFinder.getDataStore(map);

KML 文件中的一部分

<MultiGeometry>
<Polygon>
<altitudeMode>
relativeToGround
</altitudeMode>
<outerBoundaryIs>
<LinearRing>
<coordinates>
 5.301275,50.883145,1 5.301244,50.883233,1 5.301302,50.88329999999999,1 5.301146,50.883552,1 5.301037,50.883757,1 5.301124,50.88386299999999,1 5.301524,50.884123,1 5.301924,50.88421500000001,1 5.302014,50.884129,1 5.301751,50.88367,1 5.301275,50.883145,1 
</coordinates>
</LinearRing>
</outerBoundaryIs>
</Polygon>
<Point>
<coordinates>
5.30152,50.883681,0
</coordinates>
</Point>
</MultiGeometry>
4

1 回答 1

0

所有线性环必须至少有 3 个点,并且它们的第一个点和最后一个点必须相同。

在这个例子中它是真的,但可能是你的文件包含错误的文件。

于 2014-12-22T15:18:11.480 回答