学习GeoTools的Data模块的相关内容(下)-- (学习GIS【2】)

 

 

地理信息系统中最重要的东西莫过于就是数据了,而且我接触GeoTools的本意就是利用其处理众多标准的Gis格式文件的能力。所以首先从GeoToolsData模块着手来开始学习GeoTools

 

 Geotools_Data

 

Data模块的定义见  http://docs.codehaus.org/display/GEOTDOC/10+Data

 

The Data module is all about hoisting data (usually in the form of features) off of external services, disk files etc... into your application. This is where you can finally start putting the toolkit to work.

 

 最后一句说明了这个模块的重要性:P

 

 

 

因为Data模块的类很多,但是无外乎就是处理各种GIS文件格式(Shape,mif/mid…)。下面学习Data模块主要以处理Shapefile格式相关的部分。其他格式文件类似。

 

上面这张图来自 http://docs.codehaus.org/display/GEOTDOC/10+Data

是官方网站上学习和阐述Data模块的资料列表

 

下面就这张图的顺序记录下学习Data模块的心得。

 Geotools_Data_List

 

主要是下面几个类概括了整个Data模块的作用,需要特别注意:

DataStore

DataAccess

FeatureSource

FeatureStore

 

10 Memory DataStore

http://docs.codehaus.org/display/GEOTDOC/10+Memory+DataStore

 

Memory DataStore用来在内存中模拟一个数据源。而不是从某个输入端加载进来的(网络,Shapefile,mid/mid…

 

例如可以创建一个数据源,加入部分需要保存的空间数据,然后整体保存到Shapefile或者mif或者其他格式。。:P

 

如果在MemoryDataStrore中添加修改删除空间数据,添加修改删除空间数据的属性,见

http://docs.codehaus.org/display/GEOTDOC/10+Memory+DataStore

 

 

 

11 Exporting to A Shapefilehttp://docs.codehaus.org/display/GEOTDOC/11+Exporting+to+A+Shapefile

 

 

下面是一个完整的课运行的例子!在跑这个例子的时候出现了小插曲,就是报了一个不是初学者能解决的错误,莫名其妙的:)错误是Fail to connect to ESPG connection,我的版本是GeoTools2.5.5在网上查了下原因,也解决这个问题,在这里顺便把解决这个问题的解决方法给贴出来,在测试这些例子的时候发现GeoToolsAPI使用起来不是太舒服,好多类名字在不同包里有相同的名字,可能是我理解的不是太深,但是对于初学者,这个学习的阻抗还是大了点:)

package com.geoguide.snail.geotools;

 

import java.io.*;

import java.net.*;

import java.util.*;

 

import org.geotools.data.*;

import org.geotools.data.shapefile.indexed.*;

import org.geotools.feature.*;

import org.geotools.referencing.*;

import org.opengis.feature.simple.SimpleFeatureType;

import org.opengis.feature.type.FeatureType;

import org.opengis.referencing.*;

import org.opengis.referencing.crs.*;

public class NewShapefile {

 

  public static void main(String[] args) {

    FileDataStoreFactorySpi factory = new IndexedShapefileDataStoreFactory();

 

    File file = new File("C://testType.shp");

    Map map = null;

    try {

      map = Collections.singletonMap("url", file.toURI().toURL());

    }

    catch (MalformedURLException ex2) {

      ex2.printStackTrace();

    }

 

    DataStore myData = null;

    try {

      myData = factory.createNewDataStore(map);

      FeatureType featureType = null;

      try {

        featureType = DataUtilities.createType("my", "geom:Point,name:String,age:Integer,des:String");

      }

      catch (SchemaException ex) {

        ex.printStackTrace();

      }

      CoordinateReferenceSystem crs = null;

      try {

        crs = CRS.decode("EPSG:4326");

      }

      catch (NoSuchAuthorityCodeException ex3) {

        ex3.printStackTrace();

      }

      catch (FactoryException ex3) {

        ex3.printStackTrace();

      }

      if(myData instanceof IndexedShapefileDataStore){

        ((IndexedShapefileDataStore)myData).forceSchemaCRS(crs);

      }

      myData.createSchema( (SimpleFeatureType) featureType);

    }

    catch (IOException ex1) {

      ex1.printStackTrace();

    }

  }

}

 

Failed to connect the EPSG database错误

 

Shapefile Plugin

http://docs.codehaus.org/display/GEOTDOC/Shapefile+Plugin

GeoTools shapefile文件格式的支持是以插件的形式提供的,GeoTools的框架结构还是很有趣的,通过像TCP协议一样的分层结构来做到分离,然后在每层上提供plugin的嵌入,非常简洁优美的结构。见下图,图片来自http://docs.codehaus.org/display/GEOT/8.1+Architecture

 GeoTools的architecture patterns

 

其他对ArcSDE,WFS的支持都是类似的,在官网中没有放一个完整的操作shapefile的代码,在这里放上一个完整的demo,可以直接运行!

/*

 *    GeoTools - The Open Source Java GIS Tookit

 *    http://geotools.org

 *

 *    (C) 2006-2008, Open Source Geospatial Foundation (OSGeo)

 *

 *    This file is hereby placed into the Public Domain. This means anyone is

 *    free to do whatever they wish with this file. Use it well and enjoy!

 */

package com.geoguide.snail.geotools.demo;

 

import java.io.*;

import java.util.*;

 

import org.geotools.data.*;

import org.geotools.demo.swing.*;

import org.geotools.factory.*;

import org.geotools.feature.*;

import org.geotools.feature.collection.*;

import org.geotools.gui.swing.*;

import org.opengis.feature.Feature;

import org.opengis.feature.simple.SimpleFeature;

import org.opengis.feature.simple.SimpleFeatureType;

import com.vividsolutions.jts.geom.*;

 

/**

 * How to Read a Shapefile.

 * <p>

 * Please visit the GeoTools User Guide: <a

 * href="http://docs.codehaus.org/display/GEOTDOC/04+How+to+Read+a+Shapefile">

 *

 * @author Jody Garnett (Refractions Research)

 *

 */

public class ShapefileRead {

 

  public static void main(String[] args) throws Exception {

    System.out.println("Welcome to GeoTools:" + GeoTools.getVersion());

 

    File file;

    if (args.length == 0) {

      file = ShapeFileDialog.showOpenShapefile(null);

    }

    else {

      file = new File(args[0]);

    }

    if (file == null || !file.exists()) {

      System.exit(1);

    }

 

    Map<String, Object> connect = new HashMap<String, Object> ();

    connect.put("url", file.toURI().toURL());

 

    DataStore dataStore = DataStoreFinder.getDataStore(connect);

    String[] typeNames = dataStore.getTypeNames();

    String typeName = typeNames[0];

 

    System.out.println("Reading content " + typeName);

 

    FeatureSource<SimpleFeatureType, SimpleFeature> featureSource = dataStore.getFeatureSource(typeName);

    FeatureCollection<SimpleFeatureType, SimpleFeature> collection = featureSource.getFeatures();

 

    class DistanceVisitor

        extends AbstractFeatureVisitor {

      int length = 0;

      double area = 0;

      public void visit(Feature feature) {

        Geometry geometry = (Geometry) feature.getDefaultGeometryProperty().getValue();

        length += geometry.getLength();

        area += geometry.getArea();

      }

    };

    DistanceVisitor distance = new DistanceVisitor();

 

    collection.accepts(distance, new ProgressWindow(null));

    System.out.println("Total length " + distance.length);

    System.out.println("Total area " + distance.area);

 

  }

}

 

 

 

org.geotools org.geotools.arcsde org.geotools.arcsde.data org.geotools.arcsde.data.versioning org.geotools.arcsde.data.view org.geotools.arcsde.filter org.geotools.arcsde.gce org.geotools.arcsde.gce.band org.geotools.arcsde.gce.imageio org.geotools.arcsde.gce.producer org.geotools.arcsde.pool org.geotools.axis org.geotools.brewer.color org.geotools.coverage org.geotools.coverage.grid org.geotools.coverage.grid.io org.geotools.coverage.grid.io.imageio org.geotools.coverage.io org.geotools.coverage.processing org.geotools.coverage.processing.operation org.geotools.data org.geotools.data.collection org.geotools.data.crs org.geotools.data.db2 org.geotools.data.db2.filter org.geotools.data.dir org.geotools.data.gml org.geotools.data.gpx org.geotools.data.gpx.temporal org.geotools.data.h2 org.geotools.data.jdbc org.geotools.data.jdbc.attributeio org.geotools.data.jdbc.datasource org.geotools.data.jdbc.fidmapper org.geotools.data.jdbc.referencing org.geotools.data.memory org.geotools.data.mif org.geotools.data.mysql org.geotools.data.oracle org.geotools.data.oracle.attributeio org.geotools.data.oracle.referencing org.geotools.data.oracle.sdo org.geotools.data.ows org.geotools.data.postgis org.geotools.data.postgis.attributeio org.geotools.data.postgis.collection org.geotools.data.postgis.fidmapper org.geotools.data.postgis.referencing org.geotools.data.property org.geotools.data.shapefile org.geotools.data.shapefile.dbf org.geotools.data.shapefile.indexed org.geotools.data.shapefile.indexed.attribute org.geotools.data.shapefile.prj org.geotools.data.shapefile.shp org.geotools.data.shapefile.shp.xml org.geotools.data.store org.geotools.data.tiger org.geotools.data.view org.geotools.data.vpf org.geotools.data.vpf.exc org.geotools.data.vpf.file org.geotools.data.vpf.ifc org.geotools.data.vpf.io org.geotools.data.vpf.readers org.geotools.data.vpf.util org.geotools.data.wfs org.geotools.data.wms org.geotools.data.wms.request org.geotools.data.wms.response org.geotools.data.wms.xml org.geotools.demo org.geotools.demo.data org.geotools.demo.example org.geotools.demo.features org.geotools.demo.geometry org.geotools.demo.introduction org.geotools.demo.jts org.geotools.demo.libraryJTS org.geotools.demo.main org.geotools.demo.mappane org.geotools.demo.metadata.example org.geotools.demo.postgis org.geotools.demo.swing org.geotools.demo.swing.process org.geotools.demo.widgets org.geotools.demo.xml org.geotools.display.canvas org.geotools.display.canvas.map org.geotools.display.event org.geotools.display.geom org.geotools.display.style org.geotools.factory org.geotools.feature org.geotools.feature.collection org.geotools.feature.simple org.geotools.feature.type org.geotools.feature.visitor org.geotools.filter org.geotools.filter.capability org.geotools.filter.expression org.geotools.filter.function org.geotools.filter.function.math org.geotools.filter.identity org.geotools.filter.parser org.geotools.filter.spatial org.geotools.filter.text.cql2 org.geotools.filter.text.txt org.geotools.filter.v1_0 org.geotools.filter.v1_0.capabilities org.geotools.filter.v1_1 org.geotools.filter.v1_1.capabilities org.geotools.filter.visitor org.geotools.gce.arcgrid org.geotools.gce.geotiff org.geotools.gce.geotiff.crs_adapters org.geotools.gce.geotiff.IIOMetadataAdpaters org.geotools.gce.geotiff.IIOMetadataAdpaters.utils org.geotools.gce.geotiff.IIOMetadataAdpaters.utils.codes org.geotools.gce.gtopo30 org.geotools.gce.image org.geotools.gce.imagemosaic org.geotools.gce.imagepyramid org.geotools.geometry org.geotools.geometry.array org.geotools.geometry.coordinatesequence org.geotools.geometry.iso org.geotools.geometry.iso.aggregate org.geotools.geometry.iso.complex org.geotools.geometry.iso.coordinate org.geotools.geometry.iso.index org.geotools.geometry.iso.index.quadtree org.geotools.geometry.iso.io org.geotools.geometry.iso.io.wkt org.geotools.geometry.iso.operation org.geotools.geometry.iso.operation.overlay org.geotools.geometry.iso.operation.relate org.geotools.geometry.iso.primitive org.geotools.geometry.iso.root org.geotools.geometry.iso.topograph2D org.geotools.geometry.iso.topograph2D.index org.geotools.geometry.iso.topograph2D.util org.geotools.geometry.iso.util org.geotools.geometry.iso.util.algorithm2D org.geotools.geometry.iso.util.algorithmND org.geotools.geometry.iso.util.elem2D org.geotools.geometry.iso.util.interpolation org.geotools.geometry.iso.util.topology org.geotools.geometry.jts org.geotools.geometry.jts.coordinatesequence org.geotools.geometry.jts.spatialschema org.geotools.geometry.jts.spatialschema.geometry org.geotools.geometry.jts.spatialschema.geometry.aggregate org.geotools.geometry.jts.spatialschema.geometry.complex org.geotools.geometry.jts.spatialschema.geometry.geometry org.geotools.geometry.jts.spatialschema.geometry.primitive org.geotools.geometry.text org.geotools.gml org.geotools.gml.producer org.geotools.gml2 org.geotools.gml2.bindings org.geotools.gml3 org.geotools.gml3.bindings org.geotools.gml3.bindings.smil org.geotools.gml3.smil org.geotools.gpx org.geotools.gpx.bean org.geotools.gpx.binding org.geotools.graph.build org.geotools.graph.build.basic org.geotools.graph.build.feature org.geotools.graph.build.line org.geotools.graph.build.opt org.geotools.graph.build.polygon org.geotools.graph.io org.geotools.graph.io.standard org.geotools.graph.path org.geotools.graph.structure org.geotools.graph.structure.basic org.geotools.graph.structure.line org.geotools.graph.structure.opt org.geotools.graph.traverse org.geotools.graph.traverse.basic org.geotools.graph.traverse.standard org.geotools.graph.util org.geotools.graph.util.delaunay org.geotools.graph.util.geom org.geotools.graph.util.graph org.geotools.gui.headless org.geotools.gui.swing org.geotools.gui.swing.contexttree org.geotools.gui.swing.contexttree.column org.geotools.gui.swing.contexttree.node org.geotools.gui.swing.contexttree.popup org.geotools.gui.swing.contexttree.renderer org.geotools.gui.swing.crschooser org.geotools.gui.swing.datachooser org.geotools.gui.swing.datachooser.model org.geotools.gui.swing.demo org.geotools.gui.swing.event org.geotools.gui.swing.filter org.geotools.gui.swing.icon org.geotools.gui.swing.image org.geotools.gui.swing.map.map2d org.geotools.gui.swing.map.map2d.control org.geotools.gui.swing.map.map2d.decoration org.geotools.gui.swing.map.map2d.event org.geotools.gui.swing.map.map2d.handler org.geotools.gui.swing.map.map2d.listener org.geotools.gui.swing.map.map2d.strategy org.geotools.gui.swing.misc org.geotools.gui.swing.misc.filter org.geotools.gui.swing.misc.Render org.geotools.gui.swing.process org.geotools.gui.swing.propertyedit org.geotools.gui.swing.propertyedit.filterproperty org.geotools.gui.swing.propertyedit.model org.geotools.gui.swing.propertyedit.styleproperty org.geotools.gui.swing.referencing org.geotools.gui.swing.style org.geotools.gui.swing.style.sld org.geotools.gui.swing.table org.geotools.gui.swing.tree org.geotools.image org.geotools.image.io org.geotools.image.io.metadata org.geotools.image.io.mosaic org.geotools.image.io.netcdf org.geotools.image.io.stream org.geotools.image.io.text org.geotools.image.jai org.geotools.image.palette org.geotools.index org.geotools.index.quadtree org.geotools.index.quadtree.fs org.geotools.index.rtree org.geotools.index.rtree.cachefs org.geotools.index.rtree.database org.geotools.index.rtree.database.mysql org.geotools.index.rtree.fs org.geotools.index.rtree.memory org.geotools.io org.geotools.jdbc org.geotools.kml org.geotools.kml.bindings org.geotools.legend org.geotools.map org.geotools.map.event org.geotools.math org.geotools.measure org.geotools.metadata org.geotools.metadata.iso org.geotools.metadata.iso.citation org.geotools.metadata.iso.constraint org.geotools.metadata.iso.content org.geotools.metadata.iso.distribution org.geotools.metadata.iso.extent org.geotools.metadata.iso.identification org.geotools.metadata.iso.lineage org.geotools.metadata.iso.maintenance org.geotools.metadata.iso.quality org.geotools.metadata.iso.spatial org.geotools.metadata.sql org.geotools.nature org.geotools.openoffice org.geotools.ows org.geotools.ows.bindings org.geotools.ows.v1_1 org.geotools.parameter org.geotools.process org.geotools.process.impl org.geotools.process.literal org.geotools.referencing org.geotools.referencing.crs org.geotools.referencing.cs org.geotools.referencing.datum org.geotools.referencing.example org.geotools.referencing.factory org.geotools.referencing.factory.epsg org.geotools.referencing.factory.wms org.geotools.referencing.operation org.geotools.referencing.operation.builder org.geotools.referencing.operation.matrix org.geotools.referencing.operation.projection org.geotools.referencing.operation.transform org.geotools.referencing.piecewise org.geotools.referencing.wkt org.geotools.renderer org.geotools.renderer.i18n org.geotools.renderer.lite org.geotools.renderer.lite.gridcoverage2d org.geotools.renderer.shape org.geotools.renderer.shape.shapehandler.jts org.geotools.renderer.shape.shapehandler.simple org.geotools.renderer.style org.geotools.repository org.geotools.repository.adaptable org.geotools.repository.defaults org.geotools.repository.postgis org.geotools.repository.property org.geotools.repository.shapefile org.geotools.repository.styling org.geotools.repository.wfs org.geotools.repository.wms org.geotools.sld org.geotools.sld.bindings org.geotools.styling org.geotools.styling.visitor org.geotools.svg org.geotools.test org.geotools.text org.geotools.text.filter org.geotools.util org.geotools.util.logging org.geotools.utils org.geotools.utils.coveragetiler org.geotools.utils.imagemosaic org.geotools.utils.imageoverviews org.geotools.utils.imagepyramid org.geotools.utils.progress org.geotools.validation org.geotools.validation.attributes org.geotools.validation.dto org.geotools.validation.network org.geotools.validation.relate org.geotools.validation.spatial org.geotools.validation.xml org.geotools.wfs org.geotools.wfs.bindings org.geotools.wfs.protocol org.geotools.wfs.v_1_0_0.data org.geotools.wfs.v_1_1_0.data org.geotools.xlink org.geotools.xml org.geotools.xml.filter org.geotools.xml.gml org.geotools.xml.handlers org.geotools.xml.handlers.xsi org.geotools.xml.impl org.geotools.xml.impl.jxpath org.geotools.xml.schema org.geotools.xml.schema.impl org.geotools.xml.styling org.geotools.xml.test org.geotools.xml.transform org.geotools.xml.wfs org.geotools.xml.xLink org.geotools.xml.xsi org.geotools.xs org.geotools.xs.bindings org.geotools.xs.facets
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值