GeoTools开发GIS图形界面应用程序

GeoTools开发GIS图形界面应用程序

GeoTools是大名鼎鼎的JAVA开源开发包,支持开发基于Swing的GUI应用程序。GeoTools对于矢量数据和栅格数据都有完善的支持,是开源GIS方案中常见的选择之一。例如流行的GIS服务器GeoServer就是基于GeoTools开发的,另一个桌面GIS软件uDig也是使用GeoTools开发的。

前些天看了些文档,今天得空先把官网上的简单demo跑起来。代码如下:

import org.geotools.data.FileDataStore;
import org.geotools.data.FileDataStoreFinder;
import org.geotools.data.simple.SimpleFeatureSource;
import org.geotools.map.FeatureLayer;
import org.geotools.map.Layer;
import org.geotools.map.MapContent;
import org.geotools.styling.SLD;
import org.geotools.styling.Style;
import org.geotools.swing.JMapFrame;
import org.geotools.swing.data.JFileDataStoreChooser;

import java.io.File;

public class MapGuiApp {

    public static void main(String [] args) {
        try {
            guiMain(args);
        }
        catch (Exception e) {
            e.printStackTrace();
        }
    }

    /**
     * GeoTools Quickstart demo application. Prompts the user for a shapefile and displays its
     * contents on the screen in a map frame
     */
    public static void guiMain(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("China Boundary");

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

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

 运行的效果就是上边第一个截图,使用的数据是中国边界的shp文件。GeoTools中封装的Swing组件还是蛮不错的,开箱即用就可以满足简单的桌面GIS的需求。

如果你对于开源GIS软件有兴趣或有疑问,欢迎加入QQ群“开源GIS技术交流群”讨论学习,备注CSDN。

上一篇:geotools相关依赖无法获取


下一篇:java-将笛卡尔像素数据数组转换为纬度/经度像素数据数组