gdal 读取点要素_GeoTools介绍、环境安装、读取shp文件并显示

GeoTools是一个开源的Java GIS库,实现了OGC标准,用于处理地理空间数据。本文介绍了GeoTools支持的数据格式,如GeoTIFF、Shapefile等,并讲解了环境搭建及第一个读取SHP文件的示例。GeoTools依赖于JTS和GeoAPI,常用于开源GIS软件如uDIG和GeoServer。
摘要由CSDN通过智能技术生成

4c2fb05a56ceb8325655856294e3105d.png

a102cc7076591d8fe1cd5813673657e9.png

GeoTools是一个开放源代码(LGPL)Java代码库,它提供了符合标准的方法来处理地理空间数据,例如实现地理信息系统(GIS)。GeoTools库实现了开放地理空间联盟(OGC)规范。

  • Geotools主要提供各种GIS算法,实现各种数据格式的读写和显示。
  • 在显示方面要差一些,只是用Swing实现了地图的简单查看和操作。
  • 用户可以根据Geotools提供的算法自己实现地图的可视化。OpenJump和udig就是基于Geotools的。
  • 目前的大部分开源软件,如udig,geoserver等,对空间数据的处理都是由geotools来做支撑。
  • web服务,命令行工具和桌面程序都可以由geotools来实现。
  • 是构建在OGC标准之上的,是OGC思想的一种实现。而OGC是国际标准,所以geotools将来必定会成为开源空间数据处理的主要工具,
  • Geotools用到的两个较重要的开源GIS工具包是JTS和GeoAPI。前者主要是实现各种GIS拓扑算法,也是基于GeoAPI的。
  • Geotools现在还只是基于2D图形的,缺乏对 3D空间数据算法和显示的支持。

Geotools支持的数据格式

1. `arcsde`, `arcgrid`, `geotiff`, `grassraster`, `gtopo30`, `image`(`JPEG`, `TIFF`, `GIF`, `PNG`), `imageio-ext-gdal`, `imagemoasaic`, `imagepyramid`, `JP2K`,`matlab`;

2. 支持的数据库“jdbc-ng”:`db2`, `h2`, `mysql`, `oracle`, `postgis`, `spatialite`, `sqlserver`;

3. 支持的矢量格式和数据访问:`app-schema`, `arcsde`, `csv`, `dxf`, `edigeo`, `excel`, `geojson`,`org`, `property`, `shapefile`, `wfs`;

4. `XML`绑定。基于xml的Java数据结构和绑定提供了如下格式`xsd-core` (xml simple types), `fes`,`filter`, `gml2`, `gml3`, `kml`, `ows`, `sld`, `wcs`, `wfs`, `wms`, `wps`, `vpf`。对于额外的`geometry`、`sld`和`filter`的编码和解析可以通过`dom`和`sax`程序。

支持大部分的OGC标准

1. OGC中的sld/SE和渲染引擎;

2. OGC一般要素模型包括简单要素支持;

3. OGC中栅格信息的网格影像表达;

4. OGC中WFS,WMS和额外的WPS;

5. ISO 19107 geometry规范;

Geotools依赖的开源项目

1. JTS:JTS是加拿大的 Vivid Solutions 做的一套开放源码的 Java API。它提供了一套空间数据操作的核心算法,为在兼容OGC标准的空间对象模型中进行基础的几何操作提供2D空间谓词API。

2. GeoAPI:GeoAPI为OpenGIS规范提供一组Java接口。

环境搭建

在本文最后的github项目中有安装介绍和遇到的坑。

第一个demo

其实就是官网的入门案例。查看本文下面的 github中的源码也可以。

package com.tutorial.quickstart;

/*
 *    GeoTools - The Open Source Java GIS Toolkit
 *    GeoTools The Open Source Java GIS Toolkit
 *
 *    (C) 2019, Open Source Geospatial Foundation (OSGeo)
 *
 *    This library is free software; you can redistribute it and/or
 *    modify it under the terms of the GNU Lesser General Public
 *    License as published by the Free Software Foundation;
 *    version 2.1 of the License.
 *
 *    This library is distributed in the hope that it will be useful,
 *    but WITHOUT ANY WARRANTY; without even the implied warranty of
 *    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 *    Lesser General Public License for more details.
 *
 */


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;
import java.io.IOException;

/**
 * Prompts the user for a shapefile and displays the contents on the screen in a map frame.
 *
 * <p>This is the GeoTools Quickstart application used in documentationa and tutorials. *
 */
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)  {
        // display a data store file chooser dialog for shapefiles
        File file = JFileDataStoreChooser.showOpenFile("shp", null);
        if (file == null) {
            return;
        }

//        "data/CHN_adm_shp/CHN_adm0.shp"
//        String path = "data/ne_50m_admin_0_countries/ne_50m_admin_0_countries.shp";

//        File file = new File(path);

        // FileDataStoreFinder
        // 可以使我们轻松处理文件。另一种处理方法是使用连接参数映射。这种技术使我们对使用shapefile的方式有了更多的控制,
        // 还使我们可以连接到数据库和Web功能服务器。
        FileDataStore store = null;
        try {
            store = FileDataStoreFinder.getDataStore(file);
        } catch (IOException e) {
            e.printStackTrace();
        }
        SimpleFeatureSource featureSource = null;
        try {
            featureSource = store.getFeatureSource();
        } catch (IOException e) {
            e.printStackTrace();
        }

        // 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);
    }


}

关注

yafengstark/geotools-book​github.com

查看源码和介绍。

本文参考

Geotools应用简要指南_GIS帝国-地理信息系统门户||GIS帝国论坛-地理信息系统技术论坛​www.gisempire.com
db3faf45b25a762474a8c27ed1492f75.png

小专栏同步更新。

GeoTools介绍、环境安装、读取shp文件并显示 - 小专栏​xiaozhuanlan.com
b49898c15b6c687bb22154b229890a5b.png
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值