GeoTools-数据组织结构
目录
GeoTools-数据组织结构
2016年1月29日
1 目标:读写不同格式的数据,进行统一的管理和操作。
2 原理:使用DataAccess以不同格式的驱动读写各种文件,使用FeatureSource管理要素数据。使用Style(SLD)管理样式,使用Layer管理显示。使用MapContent管理所有地图相关信息。
3 流程:创建图层(打开地图文件,获取要素数据源,创建要素样式)。创建地图Model(图层和地图UI)
3.1 创建图层:打开地图文件,获取要素数据源,创建要素样式。
FileDataStore ds =FileDataStoreFinder.getDataStore(newURL(“file://D:/Data/shapefiles/states.shp”));
SimpleFeatureStore sfs =(SimpleFeatureStore) ds.getFeatureSource();
Style style =SLD.createSimpleStyle(sfs.getSchema());
Layer layer = newFeatureLayer(sfs,style);
3.2 创建地图Model(图层和地图UI)
MapContent map = new MapContent();
map.setTitle(“GtDemoXX”);
map.addLayer(layer);
3.3 示例
//Main.java
package lee;
importjava.io.File;
importjava.io.IOException;
importorg.geotools.data.FileDataStore;
importorg.geotools.data.FileDataStoreFinder;
importorg.geotools.data.simple.SimpleFeatureSource;
importorg.geotools.map.FeatureLayer;
importorg.geotools.map.Layer;
importorg.geotools.map.MapContent;
importorg.geotools.styling.SLD;
importorg.geotools.styling.Style;
importorg.geotools.swing.JMapFrame;
importorg.geotools.swing.data.JFileDataStoreChooser;
public class Main{
public static void main(String[] args)throws IOException {
// TODO Auto-generated method stub
File file =JFileDataStoreChooser.showOpenFile(“shp”, null);
if(null==file){
System.out.println(“file==null”);
}
FileDataStore fds=FileDataStoreFinder.getDataStore(file);
SimpleFeatureSourcesfs=fds.getFeatureSource();
MapContent map=new MapContent();
map.setTitle(“GtDemoxx”);
Style style=SLD.createSimpleStyle(fds.getSchema());
Layer lyr = new FeatureLayer(sfs,style);
map.addLayer(lyr);
JMapFrame.showMap(map);
}
}
4 方法:数据访问DataAccess、DataStore:提供数据存储位置中可用的数据源,数据源的类型和信息。
4.1 目标:访问文件或数据服务,获取存储的信息。
4.2 原理:根据不同类型文件的驱动(需要提前注册),扫描指定位置,从驱动中读取信息。
4.3 方法:继承关系、成员方法
4.3.1继承关系:DataAccess《-DataStore《—具体DataStore
DataAccess
-|DataStore
–|FileDataStore
–|AbstractDataStore
…
4.3.2成员方法
4.3.2.1 获取要素数据源:getFeatureSource()。
4.3.2.2 三种类型的要素数据源:FeatureSource(只读),FeatureStore(读写),FeatureLocking(线程安全的)。
4.3.2.3 获取数据访问:使用相应DataStoreFinder的 getDataStore()等相关函数。
5 方法:要素数据源FeatureSource、FeatureStore,FeatureLocking:获取要素数据用于显示、操作。
5.1 目标:操作要素,获取要素数据,以及要素的整体范围、要素总数等相关信息。
5.2 原理:使用相应格式的驱动读写数据。
5.3 方法
5.3.1继承关系:FeatureSource《-FeatureStore《—FeatureLocking
5.3.2成员方法
5.3.2.1 获取要素getFeatures():返回要素集合,可以设置条件。
5.3.2.2 获取要素类型getSchema():如果是同种要素,则返回要素类型;如果是不同种要素,则返回所有要素的最基本公共类型。
6 方法:图层样式Style:设置图层中要素的显示样式。
6.1 目标:要素的显示样式,使用SLD定义。
6.2 原理:构造SLD(XML格式)定义图层要素的显示样式。
使用SLD类直接创建样式。
6.3 方法:使用SLD创建Style。
创建样式:如createLineStyle()等,包含各种类型的静态函数。
7 方法:图层Layer:显示要素集的基本组织,包括数据和样式。
7.1 目标:显示的基本单位,用于要素集的渲染。
7.2 原理:组织图层的要素和样式,以及其它用于显示的信息。
7.3 方法
7.3.1继承关系:Layer《-StyleLayer《-FeatureLayer
7.3.2成员方法
7.3.2.1 创建对象:使用要素数据源和样式创建。
Layer layer = new FeatureLayer(sfs,style);
8 方法:地图模型MapContent:地图的数据模型Model,包括所有Layer及显示相关的属性、方法、交互等。
8.1 目标:地图的Model,用于盛放与地图有关的所有信息。
8.2 原理:图层管理+UI信息+事件交互
8.3 方法
8.3.1继承关系:顶层类,主要用于管理
8.3.2成员方法
图层管理:图层的CRUD。
UI信息:地图名称,范围等。
事件交互:图层事件等。
转载自:https://blog.csdn.net/sf2gis2/article/details/50629338