GeoTools 18.1 使用 JMapFrame 抛出空指针
GeoTools 18.1 throws nullpointer using JMapFrame
使用下面的代码(我主要从 GeoTools 站点获得)我得到一个 NullPointer。
作为参考,我使用了 WMS 1.3
的 OGC 参考 url
public static void main(String[] args) throws IOException, ServiceException {
String[] mList = {"http://metaspatial.net/cgi-bin/ogc-wms.xml"};
URL capabilitiesURL = WMSChooser.showChooseWMS(Arrays.asList(mList) );
if( capabilitiesURL == null ){
System.exit(0); // canceled
}
WebMapServer wms = new WebMapServer( capabilitiesURL );
List<org.geotools.data.ows.Layer> wmsLayers = WMSLayerChooser.showSelectLayer( wms );
if( wmsLayers == null ){
JOptionPane.showMessageDialog(null, "Could not connect - check url");
System.exit(0);
}
MapContent mapcontent = new MapContent();
mapcontent.setTitle( wms.getCapabilities().getService().getTitle() );
for( org.geotools.data.ows.Layer wmsLayer : wmsLayers ){
WMSLayer displayLayer = new WMSLayer(wms, wmsLayer );
mapcontent.addLayer(displayLayer);
}
// Now display the map
JMapFrame.showMap(mapcontent);
}
堆栈跟踪是这样说的:
WARNING: Starting schema with ServiceExceptionReport element.
Exception in thread "main" java.lang.NullPointerException
at org.geotools.map.WMSCoverageReader.reference(WMSCoverageReader.java:432)
at org.geotools.map.WMSCoverageReader.updateBounds(WMSCoverageReader.java:402)
at org.geotools.map.WMSCoverageReader.addLayer(WMSCoverageReader.java:196)
at org.geotools.map.WMSCoverageReader.<init>(WMSCoverageReader.java:126)
at org.geotools.map.WMSLayer.<init>(WMSLayer.java:81)
at javagisviewer.JavaGisViewer.main(JavaGisViewer.java:50)
我将 Netbeans 8.2 与 Java 1.8u131(不是 Maven)一起使用
我根据 QuickStart (http://docs.geotools.org/latest/userguide/tutorial/quickstart/netbeans.html) 删除了下一个 JAR 文件,我还删除了 GDAL jar。
gt-arcgrid-18.1.jar
gt-arcsde-18.1.jar
gt-arcsde-common-18.1.jar
gt-epsg-hsql-18.1.jar
gt-epsg-oracle-18.1.jar
gt-epsg-postgresql-18.1.jar
gt-epsg-wkt-18.1.jar
gt-imageio-ext-gdal-18.1.jar
gt-jdbc-db2-18.1.jar
gt-jdbc-h2-18.1.jar
gt-jdbc-mysql-18.1.jar
gt-jdbc-oracle-18.1.jar
好像缺少坐标参考(srs/crs)?
我不知道从这里去哪里
对我来说,代码完美无缺!所以您可能如您所料遇到了 jar 问题。这就是为什么我们建议 GeoTools 用户使用 Maven,这样就不会出现此类问题。
您的问题是您删除了 所有 4 个 epsg 罐,而不是文档中提到的仅删除其中的 3 个。如果您将 gt-epsg-wkt-18.1.jar
添加回您的项目,一切都应该没问题。
使用下面的代码(我主要从 GeoTools 站点获得)我得到一个 NullPointer。
作为参考,我使用了 WMS 1.3
public static void main(String[] args) throws IOException, ServiceException {
String[] mList = {"http://metaspatial.net/cgi-bin/ogc-wms.xml"};
URL capabilitiesURL = WMSChooser.showChooseWMS(Arrays.asList(mList) );
if( capabilitiesURL == null ){
System.exit(0); // canceled
}
WebMapServer wms = new WebMapServer( capabilitiesURL );
List<org.geotools.data.ows.Layer> wmsLayers = WMSLayerChooser.showSelectLayer( wms );
if( wmsLayers == null ){
JOptionPane.showMessageDialog(null, "Could not connect - check url");
System.exit(0);
}
MapContent mapcontent = new MapContent();
mapcontent.setTitle( wms.getCapabilities().getService().getTitle() );
for( org.geotools.data.ows.Layer wmsLayer : wmsLayers ){
WMSLayer displayLayer = new WMSLayer(wms, wmsLayer );
mapcontent.addLayer(displayLayer);
}
// Now display the map
JMapFrame.showMap(mapcontent);
}
堆栈跟踪是这样说的:
WARNING: Starting schema with ServiceExceptionReport element.
Exception in thread "main" java.lang.NullPointerException
at org.geotools.map.WMSCoverageReader.reference(WMSCoverageReader.java:432)
at org.geotools.map.WMSCoverageReader.updateBounds(WMSCoverageReader.java:402)
at org.geotools.map.WMSCoverageReader.addLayer(WMSCoverageReader.java:196)
at org.geotools.map.WMSCoverageReader.<init>(WMSCoverageReader.java:126)
at org.geotools.map.WMSLayer.<init>(WMSLayer.java:81)
at javagisviewer.JavaGisViewer.main(JavaGisViewer.java:50)
我将 Netbeans 8.2 与 Java 1.8u131(不是 Maven)一起使用 我根据 QuickStart (http://docs.geotools.org/latest/userguide/tutorial/quickstart/netbeans.html) 删除了下一个 JAR 文件,我还删除了 GDAL jar。
gt-arcgrid-18.1.jar
gt-arcsde-18.1.jar
gt-arcsde-common-18.1.jar
gt-epsg-hsql-18.1.jar
gt-epsg-oracle-18.1.jar
gt-epsg-postgresql-18.1.jar
gt-epsg-wkt-18.1.jar
gt-imageio-ext-gdal-18.1.jar
gt-jdbc-db2-18.1.jar
gt-jdbc-h2-18.1.jar
gt-jdbc-mysql-18.1.jar
gt-jdbc-oracle-18.1.jar
好像缺少坐标参考(srs/crs)?
我不知道从这里去哪里
对我来说,代码完美无缺!所以您可能如您所料遇到了 jar 问题。这就是为什么我们建议 GeoTools 用户使用 Maven,这样就不会出现此类问题。
您的问题是您删除了 所有 4 个 epsg 罐,而不是文档中提到的仅删除其中的 3 个。如果您将 gt-epsg-wkt-18.1.jar
添加回您的项目,一切都应该没问题。