在Appengine上创建shapefile最好是在Java

时间:2017-05-17 13:32:43

标签: java google-app-engine kml shapefile geotools

您好我想根据appengine上的KML文件创建一个shapefile(.shp .shx .prj .dbf)。我的项目是关于java。

我尝试使用geotools,并且能够在Appengine上创建.shp .shx .prj(在地理工具上进行一些更改以保存在Google Cloud上)但是无法使用它创建.dbf。 Geotools依赖于AWT来创建dbf,而Appengine则限制AWT。

对此有什么消息?我甚至开始考虑调用python模块或其他东西(从未做过这样的事情)。甚至可以从kml创建一个dbf。

由于

编辑1: 当我呼叫ShapefileDatastore.createSchema()时,我必须传递SimpleFeatureType作为参数。

当我尝试创建SimpleFeatureType或甚至使用BasicFeatureTypes.POLYGON时,它给了我错误:

引起: java.lang.NoClassDefFoundError: java.awt.RenderingHints is a restricted class. Please see the Google App Engine developer's guide for more details. at java.awt.RenderingHints.<clinit>(RenderingHints.java) at org.geotools.factory.FactoryFinder.<clinit>(FactoryFinder.java:35) at org.geotools.data.store.ContentDataStore.<init>(ContentDataStore.java:173) at org.geotools.data.shapefile.ShapefileDataStore.<init> (ShapefileDataStore.java:124) at org.geotools.data.shapefile.ShapefileDataStoreAppengine.<init> (ShapefileDataStoreAppengine.java:74) at brandeira.morholt.web.shared.util.ShapefileHelper.createShapefile(ShapefileHelpe r.java:121)

我将RenderingHints替换为非awt RenderingHints,并且他们又出现了另一个错误:

引起:     java.lang.NoClassDefFoundError: javax.imageio.spi.ServiceRegistry is a restricted class. Please see the Google App Engine developer's guide for more details. at javax.imageio.spi.ServiceRegistry.<clinit>(ServiceRegistry.java) at org.geotools.factory.CommonFactoryFinder.getServiceRegistry(CommonFactoryFinder.java:76) at org.geotools.factory.CommonFactoryFinder.lookup(CommonFactoryFinder.java:346) at org.geotools.factory.CommonFactoryFinder.getFilterFactory(CommonFactoryFinder.java:300) at org.geotools.feature.AttributeTypeBuilder.<init>(AttributeTypeBuilder.java:192) at org.geotools.feature.simple.SimpleFeatureTypeBuilder.<init>(SimpleFeatureTypeBuilder.java:196) at org.geotools.feature.simple.SimpleFeatureTypeBuilder.<init>(SimpleFeatureTypeBuilder.java:186) at org.geotools.feature.type.BasicFeatureTypes.<clinit>(BasicFeatureTypes.java:101) at brandeira.morholt.web.shared.util.ShapefileHelper.createShapefile2(ShapefileHelper.java:290)

似乎使用了很多AWT的工厂方法(在这种情况下图形不是问题,只是使用AWT的东西)。

我也替换了它并得到了:

引起:     java.lang.NoSuchMethodError: org.geotools.factory.FactoryRegistry.getServiceProvider(Ljava/lang/Class;Lcom/google/apphosting/runtime/security/shared/stub/javax/imageio/spi/ServiceRegistry$Filter;Lorg/geotools/factory/Hints;Lorg/geotools/factory/Hints$Key;)Ljava/lang/Object; at org.geotools.factory.CommonFactoryFinder.lookup(CommonFactoryFinder.java:346) at org.geotools.factory.CommonFactoryFinder.getFilterFactory(CommonFactoryFinder.java:300) at org.geotools.feature.AttributeTypeBuilder.<init>(AttributeTypeBuilder.java:192) at org.geotools.feature.simple.SimpleFeatureTypeBuilder.<init>(SimpleFeatureTypeBuilder.java:196) at org.geotools.feature.simple.SimpleFeatureTypeBuilder.<init>(SimpleFeatureTypeBuilder.java:186) at org.geotools.feature.type.BasicFeatureTypes.<clinit>(BasicFeatureTypes.java:101) at brandeira.morholt.web.shared.util.ShapefileHelper.createShapefile2(ShapefileHelper.java:290)

我还不知道这个javax.imageio.spi.ServiceRegistry(我已经取代了我找到的所有东西)来自哪里,并且我认为我扭曲了很多这似乎不是那样......

0 个答案:

没有答案