*
* POSTGEO
*/
package com.geotools.test;
/** *//**
*
* CopyRight (C) All rights reserved.
* <p>
*
* WuHan Inpoint Information Technology Development,Inc.
* <p>
*
* Author sinoly
* <p>
* Project Name: PostGeo
*
* @version 1.0 2006-11-13
*
* <p>
* Base on : JDK1.5
* <p>
*
*/
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
import java.util.NoSuchElementException;
import org.apache.log4j.Logger;
import org.geotools.data.FeatureReader;
import org.geotools.data.FeatureResults;
import org.geotools.data.FeatureSource;
import org.geotools.data.FeatureStore;
import org.geotools.data.FeatureWriter;
import org.geotools.data.postgis.PostgisDataStore;
import org.geotools.data.postgis.PostgisDataStoreFactory;
import org.geotools.factory.FactoryRegistryException;
import org.geotools.feature.AttributeType;
import org.geotools.feature.AttributeTypeFactory;
import org.geotools.feature.Feature;
import org.geotools.feature.FeatureType;
import org.geotools.feature.FeatureTypeFactory;
import org.geotools.feature.IllegalAttributeException;
import org.geotools.feature.SchemaException;
import org.geotools.geometry.Geometry;
import com.vividsolutions.jts.geom.LineString;
import com.vividsolutions.jts.io.ParseException;
import com.vividsolutions.jts.io.WKTReader;
public class GetPostgisData {
private static final Logger LOGGER = Logger.getLogger("org.geotools.postgis");
static PostgisDataStore pgDatastore;
static PostgisDataStoreFactory factory=new PostgisDataStoreFactory();
static FeatureSource fsBC;
@SuppressWarnings("unchecked")
private static void ConnPostGis(String dbtype,String URL,int port,String database,
String user,String password){
Map params = new HashMap();
params.put("dbtype", "postgis");
params.put("host", URL);
params.put("port", new Integer(port));
params.put("database", database);
params.put("user", user);
params.put("passwd", password);
try {
pgDatastore=(PostgisDataStore) factory.createDataStore( params );
if(pgDatastore!=null){
System.out.println("系统连接到位于:"+URL+"的空间数据库"+database+"成功!");
}else{
System.out.println("系统连接到位于:"+URL+"的空间数据库"+database+"失败!请检查相关参数");
}
} catch (IOException e) {
e.printStackTrace();
System.out.println("系统连接到位于:"+URL+"的空间数据库"+database+"失败!请检查相关参数");
}
}
//读取指定类型名的地理特征
public static void getFeatureSource(String sourceName){
try {
fsBC = pgDatastore.getFeatureSource(sourceName);
//System.out.println(fsBC.getFeatures().size());
} catch (IOException e) {
e.printStackTrace();
}
}
//取得POSTGIS中所有的地理图层
public static void getAllLayers(){
try {
String[] typeName = pgDatastore.getTypeNames();
for(int i=0;i<typeName.length;i++){
System.out.println(typeName[i]);
}
} catch (IOException e) {
e.printStackTrace();
}
}
//获取图层地理元素属性(Feature Attribute)
public static void getAttribute(){
FeatureType ftBC=fsBC.getSchema();
System.out.println(ftBC.getAttributeCount());
for (int i = 0; i < ftBC.getAttributeCount(); i++) {
AttributeType at = ftBC.getAttributeType( i );
//判断属性类型是否为可分配的几何对象
if (!Geometry.class.isAssignableFrom(at.getType()))
System.out.print(at.getType() + "\t");
}
System.out.println();
for (int i = 0; i < ftBC.getAttributeCount(); i++) {
AttributeType at = ftBC.getAttributeType( i );
if (!Geometry.class.isAssignableFrom(at.getType()))
System.out.print(at.getName() + "\t");
}
}
//从数据容器中读取所有的特征属性
@SuppressWarnings("deprecation")
public static void PostGisReading(){
try {
FeatureResults fsRU = fsBC.getFeatures();
FeatureReader reader = fsRU.reader();
while (reader.hasNext()) {
Feature feature;
try {
feature = reader.next();
System.out.print(feature.getID() + "\t");
for (int i = 0; i < feature.getNumberOfAttributes(); i++) {
Object attribute = feature.getAttribute( i );
if (!(attribute instanceof Geometry))
System.out.print(attribute + "\t");
}
System.out.println();
} catch (NoSuchElementException e) {
e.printStackTrace();
} catch (IllegalAttributeException e) {
e.printStackTrace();
}
}
reader.close();
} catch (IOException e1) {
e1.printStackTrace();
}
}
//添加特征值到新的特征对象中。等同于新建一个postgis数据表并向其中插入数据
@SuppressWarnings("deprecation")
public static void createFeatures(){
try {
AttributeType geom = AttributeTypeFactory.newAttributeType("the_geom",LineString.class);
AttributeType name = AttributeTypeFactory.newAttributeType("name",String.class);
FeatureType ftRoad = FeatureTypeFactory.newFeatureType
(new AttributeType[] {geom,name}, "tem_road");
WKTReader wktReader = new WKTReader();
try {
LineString geometry = (LineString) wktReader.read("LINESTRING (0 0, 10 10)");
String roadName="武络路";
pgDatastore.createSchema(ftRoad);
FeatureWriter aWriter = pgDatastore.getFeatureWriter("tem_road",
((FeatureStore) pgDatastore.getFeatureSource("tem_road")).getTransaction());
/** *//**如有批量导入数据要求,可使用 org.geotools.data.FeatureStore */
Feature aNewFeature = aWriter.next();
aNewFeature.setAttribute("the_geom",geometry);
aNewFeature.setAttribute("name", roadName);
aWriter.write();
aWriter.close();
} catch (ParseException e) {
e.printStackTrace();
} catch (IllegalAttributeException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
} catch (FactoryRegistryException e) {
e.printStackTrace();
} catch (SchemaException e) {
e.printStackTrace();
}
}
//添加Feature到已知的图层之中
public static void insertFeatures(String featurename){
WKTReader wktReader = new WKTReader();
try {
LineString geometry = (LineString) wktReader.read("LINESTRING (10 10, 20 20)");
String roadName="珞瑜路";
FeatureSource source = pgDatastore.getFeatureSource(featurename);
FeatureWriter aWriter = pgDatastore.getFeatureWriterAppend(featurename,((FeatureStore) source).getTransaction());
/** *//**如有批量导入数据要求,可使用 org.geotools.data.FeatureStore */
Feature feature = aWriter.next();
try {
feature.setAttribute("the_geom",geometry);
feature.setAttribute("name", roadName);
} catch (IllegalAttributeException e) {
// TODO 自动生成 catch 块
e.printStackTrace();
}
aWriter.write();
aWriter.close();
} catch (ParseException e1) {
// TODO 自动生成 catch 块
e1.printStackTrace();
} catch (IOException e) {
// TODO 自动生成 catch 块
e.printStackTrace();
}
}
public static void main(String[] args) throws IOException{
ConnPostGis("","localhost",5432,"navigation","root","to0124@c");
/**//*读取空间库中所有图层*/
getAllLayers();
/**//*读取roads图层的空间库,取得FeatureSource对象,
* getAttribute()方法用于读取此图层所定义的所有的属性
* 并通过PostGisReading()方法读取此图层中所有信息*/
getFeatureSource("roads");
getAttribute();
PostGisReading();
/**//*在空间库中新建一个schema并向表中插入数据*/
createFeatures();
/**//*向tem_road图层的空间库中插入一条新的记录*/
insertFeatures("tem_road");
/**//*修改空间库记录*/
}
}
分享到:
相关推荐
NULL 博文链接:https://jjxliu306.iteye.com/blog/2423964
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....
geotools 开发指导 GeoTools Users Guide : Home This page last changed on Jul 29, 2008 by jive. User Guide 01 Welcome 00 Source License 01 Documentation License 02 Meet the GeoTools Library 03 First ...
专为互操作性而设计,它使用开放标准发布来自任何主要空间数据源的数据。 作为一个社区驱动的项目,GeoServer 得到了来自世界各地的不同个人和组织的开发、测试和支持。 GeoServer 是开放地理空间联盟 (OGC) Web ...
geotools-23.2_en.chm geotools是一个 GIS 开源...GeoTools承担了从各种数据源(如PostGIS,GML,Shapefile,WFS)读取数据并将数据标准化的工作,GeoTools还是OpenGIS标准的全面实现,其中包括Filter、坐标转换、GML。
此代码主要是编写了通过geoServer发布数据服务,postGis作为空间数据的数据库,通过openlayer完成几个数据的增加,修改,删除,查询,包括属性查询,并且提供元数据测试。
执照GeoTools已根据。 用户指南页面描述了对文档和源代码示例的限制较少的许可证。贡献开发人员指南概述了使用补丁,提取请求和设置新模块为GeoTools方法。 如果您已经对GitHub有经验,请在开始之前检查我们的页面!...
一个简单的geoserver demo 集成spring boot+shiro+redis+geotools+postgis可以连接postgresql数据库,并可以对数据库中的点线面要素进行增删改,可以修改geoserver中图层样式。
用于PostGIS的MyBatis类型处理程序 MyBatis类型处理程序支持PostGIS中引入的几何类型:JDBC Geometry API 要求 Java 7或更高版本。 它依赖的最新PostGIS JDBC API使用的是PostgreSQL JDBC的JRE7版本,因此它需要...
./run.sh org.geotools.tutorial.quickstart.TableDefFromShapeFile /Users/bandyr/Documents/postgis/50m_cultural/ne_50m_admin_1_states_provinces_shp.shp Create Table ne_50m_admin_1_states_provinces_shp ...
为了实现这个崇高的目标,使用了JTS和GeoTools库,并在很早的时候就提供了很多功能。 但是,在2010年,Neo4j是一个嵌入式数据库,其部署的并行操作水平较低。 但是,多年来,Neo4j已主要部署在高并发服务器环境中...
分享一套WEBGIS开发视频课程,2023年5月完结新课,提供...WEBGIS开发基础到进阶视频教程2023全套课程,包括:GIS基础知识,web基础知识,webgis相关软件,GIS框架,项目实战,SDK相关开发,postgis数据库,geotools等。
GeoTools 邮政地理信息系统 飞路 昂首阔步 Lombok 码头工人 跑 PostGIS开始 docker run --name postgis -p 5432:5432 -e POSTGRES_PASSWORD=postgres -e POSTGRES_DB=sb2spatial -d mdillon/postgis:9.5-alpine ...
《【GIS系列】GeoTools+MybatisPlus+PostGIS实现Shp数据的读取及写入数据库》文章中JTS工具
java基于GDAL进行几何拓扑修复,使其符合OGC简单要素规范,解决使用geotools、JTS、PostGIS等在进行几何裁剪、擦除等操作时报几何拓扑错误的问题,支持shp、gdb等几何数据格式
系列课程总共分为21节:1节基本环境,5节Openlayers,3节geoserver,2节数据库postGIS,2节桌面端QGIS,4节geotools,4节项目实战。系列课程涵盖从桌面端、服务端、展示端以及具体的项目实战,每两周推出一节课程,...
对arcgis,supermap,飞渡等商业软件以及locationTech系列、geoserver、GeoNode、mapserver、postgis、Greenplum、citus data,geotools等12款开源软件进行了详细对比分析,适合需要进行三维server市场了解,前期调研...
类路径设置GeoScript需要在CLASSPATH环境变量中存在许多GeoTools库。 使用“ classpath”脚本下载必要的库并设置CLASSPATH环境: 源类路径测验一些测试用例需要实际运行的服务进行测试(例如Postgis)。 编辑“ ...
will familiarize you with the Python tools required for geo-spatial development. It introduces GIS at the basic level with a clear, detailed walkthrough of the key GIS concepts such as location, ...