Tag: geotools

从调用返回另一个代理的Java.lang.reflect.Proxy在赋值时导致ClassCastException

所以我正在玩geotools,我想我会代理他们的一个数据访问类,并跟踪它们在代码中的使用方式。 我编写了一个动态代理并在其中包含了一个FeatureSource(接口),然后快乐地完成了它。 然后我想看一下featureSource返回的一些传递对象,因为FeatureSource做的主要事情是返回一个FeatureCollection(FeatureSource类似于sql DataSource和featurecollection到sql语句)。 在我的invocationhandler中,我只是将调用传递给底层对象,打印出目标类/方法/ args并导致结果,但是对于返回FeatureCollection(另一个接口)的调用,我将该对象包装在我的代理中(相同的类,但一个新的实例,应该不重要吗?)并返回它。 BAM! Classcastexception: java.lang.ClassCastException: $Proxy5 cannot be cast to org.geotools.feature.FeatureCollection at $Proxy4.getFeatures(Unknown Source) at MyClass.myTestMethod(MyClass.java:295) 调用代码: FeatureSource featureSource = … // create the FS featureSource = (FeatureSource) FeatureSourceProxy.newInstance(featureSource, features); featureSource.getBounds();// ok featureSource.getSupportedHints();// ok DefaultQuery query1 = new DefaultQuery(DefaultQuery.ALL); FeatureCollection results = featureSource.getFeatures(query1); //<- explosion here 代理人: public class FeatureSourceProxy implements […]

Java相当于OpenLayers

我正在寻找一个Java库来显示来自各种来源的地图数据,包括shapefile,WMS,WFS,谷歌地图,可能还有ArcIMS等。看起来OpenLayers是最接近我想要的东西,除了它是一个JavaScript库,并且我正在写一个Swing应用程序。 GDAL看起来很有希望,但据我所知,在未来“某个时间”之前不会有Java绑定。 为了清楚起见,我正在寻找一个可用于显示来自多个地图服务器/源的地图的Java API。 有谁知道这样的事情是否存在,如果没有,从哪里开始? 我应该在GeoTools之上构建这个API吗? 要么…

java.lang.NoClassDefFoundError:无法初始化类javax.media.jai.JAI

我最近用GeoTools开始了我的第一个程序,其中我也使用JAI-Java Advanced Imaging 1_1_2_01和JDK 1_7。 它工作正常,直到我添加了GeoTiff Jars 。 我发现以下错误 线程“main”中的exceptionjava.lang.NoClassDefFoundError:无法在com.rgb.PixelExtractor.extract的org.geotools.gce.geotiff.GeoTiffReader.read(GeoTiffReader.java:607)初始化类javax.media.jai.JAI (PixelExtractor.java:55)at com.rgb.RGBSpliter.main(RGBSpliter.java:136) 守则如下 public void extract(File f, String name, String date) throws Exception { ParameterValue policy = AbstractGridFormat.OVERVIEW_POLICY .createValue(); policy.setValue(OverviewPolicy.IGNORE); // this will basically read 4 tiles worth of data at once from the disk… ParameterValue gridsize = AbstractGridFormat.SUGGESTED_TILE_SIZE.createValue(); //gridsize.setValue(512 * 4 + “,” + […]

如何在度,分,秒之间转换为十进制坐标

寻找一个java实用程序。 如果您可以使用geotools库告诉我如何使用它,那就更好了。