如何在swing应用程序中包含shapefile

时间:2013-04-16 09:15:16

标签: java swing geotools

我是基于gis的新项目。我正在使用netbeans IDE来包含我的shapefile,我确信我已经导入了必要的jar来包含shapefile。但它没有工作。当我运行我的应用程序时,我在simplefeaturesource方法中得到一个空指针异常。特此我加入我的程序

public class Quickstart {

    /**
     * GeoTools Quickstart demo application. Prompts the user for a shapefile and displays its
     * contents on the screen in a map frame
     */
    public static void main(String[] args) throws Exception {
        // display a data store file chooser dialog for shapefiles
        File file = JFileDataStoreChooser.showOpenFile("shp", null);
        if (file == null) {
            return;
        }

        FileDataStore store = FileDataStoreFinder.getDataStore(file);
        SimpleFeatureSource featureSource = store.getFeatureSource();

        // Create a map content and add our shapefile to it
        MapContent map = new MapContent();
        map.setTitle("Quickstart");

        Style style = SLD.createSimpleStyle(featureSource.getSchema());
        Layer layer = new FeatureLayer(featureSource, style);
        map.addLayer(layer);

        // Now display the map
        JMapFrame.showMap(map);
    }
}

1 个答案:

答案 0 :(得分:0)

根据function or method definition I have found

public static FileDataStore getDataStore(File file)
                                  throws IOException
     

依次检查每个可用的数据源实现并返回声称支持给定文件的第一个...

     

参数:

     
      
  • file - 文件
  •   
     

返回:
  声称处理所需资源的第一个数据源,如果找不到则返回null。

现在,在失败的实例中,它将返回null,在这种情况下,store将在上面的代码中等于null。由于不使用if语句检查存储,以确定它是否为null,只是声明并初始化并且您只希望获得最佳效果,然后下一行产生空指针异常。

这是我对你的代码的看法。尝试并调试它,看看store是否为null,或者在之前的行上使用if语句。