2014-12-22 21 views
0

我試圖從文件中讀取一些地理數據。我在java中使用geotools包。 我有可用的地理數據爲kml,gml和.shp,這些都是很大的文件。 這些來自外部支架,格式正確。JTS +閱讀地理數據:點數必須爲0或> 3

當我想讀取工具時,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) 

我通過文件得到這個錯誤一半。我手動檢查了所有文件:所有「linearrings」都有三個以上的點。我試圖讀取哪個文件也沒有關係。

代碼片段:

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> 
+0

您可以添加一些日誌記錄或在調試器中逐步查看究竟是什麼被解析? –

+0

你是否也得到與所有3種格式相同的錯誤? –

+0

我以某種方式設法擺脫了錯誤...不知道我做了什麼.. – jeanke

回答

0

所有線性環必須至少有3個點,並且也是他們的第一個點和最後一個點必須相同。

在這個例子中它是真實的但可能是你的文件包含錯誤的一個。

+0

感謝您的迴應!我知道,我手動檢查了這個文件,情況就是這樣!我甚至試圖用一個較小的文件來確保。 – jeanke

+0

對不起ı沒有更多的答案,但ı檢查你的linearring這是真的有一個截圖,我把我的gis程序http://i.imgur.com/lL2dbSc.png – esatilmis