geotools和geoserver利用WFS-T通信,insert操作

问题描述

本人最近需要利用java平台和geoserver发布的wfs服务通信,开始学习geotools中间件其中,在学习wfs-t服务是总是报空指针的错误,哪位大哥能不吝赐教下~具体代码:packagewfsTest;importjava.util.HashMap;importjava.util.Map;importorg.geotools.data.DataStore;importorg.geotools.data.DataStoreFinder;importorg.geotools.data.DataUtilities;importorg.geotools.data.DefaultTransaction;importorg.geotools.data.Transaction;importorg.geotools.data.wfs.v1_0_0.WFSFeatureStore;importorg.geotools.feature.simple.SimpleFeatureBuilder;importorg.geotools.geometry.jts.JTSFactoryFinder;importorg.opengis.feature.simple.SimpleFeature;importorg.opengis.feature.simple.SimpleFeatureType;importorg.opengis.feature.type.FeatureType;importcom.vividsolutions.jts.geom.Coordinate;importcom.vividsolutions.jts.geom.GeometryFactory;importcom.vividsolutions.jts.geom.Point;publicclassWFS_T_Test{/***@paramargs*/publicstaticvoidmain(String[]args)throwsException{//连接geoserverStringgetCapabilities="http://localhost:8085/geoserver/ows?service=wfs&version=1.0.0&request=GetCapabilities";MapconnectionParameters=newHashMap();//获取要素connectionParameters.put("WFSDataStoreFactory:GET_CAPABILITIES_URL",getCapabilities);DataStoreds=DataStoreFinder.getDataStore(connectionParameters);FeatureTypeft=ds.getSchema("sf:archsites");WFSFeatureStorefs=(WFSFeatureStore)ds.getFeatureSource("sf:archsites");Transactioninsert=newDefaultTransaction("insert");fs.setTransaction(insert);//创建一个feature对象GeometryFactorygeometryFactory=JTSFactoryFinder.getGeometryFactory(null);Pointpoint=geometryFactory.createPoint(newCoordinate(32.0600,118.8563));SimpleFeatureBuildersimpleFeatureBuilder=newSimpleFeatureBuilder((SimpleFeatureType)ft);simpleFeatureBuilder.add(point);simpleFeatureBuilder.add(27);simpleFeatureBuilder.add("testName111");SimpleFeaturefeature=simpleFeatureBuilder.buildFeature(null);/*SimpleFeatureCollectionfc=FeatureCollections.newCollection();fc.add(feature);*///添加数据并提交事务//fs.addFeatures(newCollectionFeatureReader(newSimpleFeature[]{feature}));//fs.addFeatures(fc);fs.addFeatures(DataUtilities.collection(feature));insert.commit();}}错误信息:Exceptioninthread"main"java.lang.NullPointerExceptionatjava.net.URI$Parser.parse(UnknownSource)atjava.net.URI.<init>(UnknownSource)atorg.geotools.data.wfs.v1_0_0.WFSTransactionState.commitPost(WFSTransactionState.java:261)atorg.geotools.data.wfs.v1_0_0.WFSTransactionState.commit(WFSTransactionState.java:152)atorg.geotools.data.DefaultTransaction.commit(DefaultTransaction.java:182)atwfsTest.WFS_T_Test.main(WFS_T_Test.java:78)

解决方案

解决方案二:
是不是由于geoserver不支持对shapefile格式的修改?必须要用数据库或者xml文件?

时间: 2024-09-29 10:46:43

geotools和geoserver利用WFS-T通信,insert操作的相关文章

消息传递-Visual C++ 中利用WM_COPYDATA进程通信

问题描述 Visual C++ 中利用WM_COPYDATA进程通信 在MFC进程利用通信时,怎么在利用发送消息的窗口类指针pWnd在接收消息后回复一个响应. 具体想法如下: BOOL CMainFrame::OnCopyData(CWnd* pWnd, COPYDATASTRUCT* pCopyDataStruct) { if (pCopyDataStruct != NULL) { LPCTSTR pszText = (LPCTSTR)(pCopyDataStruct->lpData); DW

在ironpython中利用装饰器执行SQL操作的例子

  这篇文章主要介绍了在ironpython中利用装饰器执行SQL操作的例子,文章中以操作MySQL为例,需要的朋友可以参考下 比较喜欢python的装饰器, 试了下一种用法,通过装饰器来传递sql,并执行返回结果 这个应用应该比较少 为了方便起见,直接使用了ironpython, 连接的mssql server ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33

MyBatis魔法堂:Insert操作详解(返回主键、批量插入)

一.前言      数据库操作怎能少了INSERT操作呢?下面记录MyBatis关于INSERT操作的笔记,以便日后查阅.   二. insert元素 属性详解   其属性如下:    parameterType ,入参的全限定类名或类型别名    keyColumn ,设置数据表自动生成的主键名.对特定数据库(如PostgreSQL),若自动生成的主键不是第一个字段则必须设置    keyProperty ,默认值unset,用于设置getGeneratedKeys方法或selectKey子元

对象-C++ primer 里面STL容器set的insert操作问题。。。

问题描述 C++ primer 里面STL容器set的insert操作问题... 在C++primer 5th 的13.4节里面有个类的定义是这样的: class Message { friend void swap(Message&, Message&); friend class Folder; public: //folders被隐式初始化为空集合 explicit Message(const string &str=""):contents(str){}

spring oracle 锁表-为什么insert操作会把整张表都锁住呢?

问题描述 为什么insert操作会把整张表都锁住呢? 项目中遇到一个很奇怪的问题: 问题描述:现在需要从项目外部导大量的数据到项目内,这个时候我起了一个spring事务往很多张表中去插入数据,这个时候其他用户访问系统去更新旧的数据的时候发现表被锁了.也就是说我在导入数据的时候,其他用户都不能对系统的表进行相应的更新操作.这是为什么???? 解决方案 查的时候不会锁住,只有曾删改才会 解决方案二: 当ORACLE执行insert等DML语句时,会首先自动在所要操作的表上申请一个TM锁,当TM锁获得

并发下单的优化,如何优化insert操作?

问题描述 并发下单的优化,如何优化insert操作? 现在有一个web下单的系统,可能会有上万的用户同时下单,而且不用考虑库存是不是 足够的问题,主要的问题是上万次的insert操作会进行上万次的insert,请问可不可以进 行优化,让insert操作可以一部分的commit.然后还要能够保证客户下单以后能够立即 看到订单的信息? 1.现在已经使用了ehcache.我的打算是先把订单信息插入到ehcache,然后直接返回 ,接着把订单信息放入blockingqueue,跟数据库进行同步.这样用户

access数据库-C#连接Access数据库insert操作时,debug目录下临时数据库修改了,但是原数据库不变。

问题描述 C#连接Access数据库insert操作时,debug目录下临时数据库修改了,但是原数据库不变. 尝试把accdb放在debug文件下下过,但是我导入时它自动就会在项目文件夹里复制过去一个数据库文件.insert操作时,显示插入的信息是成功的,并且当时可以搜索到该数据,但重新运行程序后,以前的数据未被保存. App.config < ?xml version="1.0" encoding="utf-8" ?> < configurati

MyBatis中insert操作返回主键的实现方法_java

在使用MyBatis做持久层时,insert语句默认是不返回记录的主键值,而是返回插入的记录条数:如果业务层需要得到记录的主键时,可以通过配置的方式来完成这个功能 针对Sequence主键而言,在执行insert sql前必须指定一个主键值给要插入的记录,如Oracle.DB2,可以采用如下配置方式: <insert id="add" parameterType="vo.Category"> <selectKey resultType="

vbscript脚本编程教程2利用fso来进行文件操作_vbs

by sssa2000 我们来看一看怎么利用fso来进行文件操作.Fso时vbs里进行文件操作的核心.作为黑客,不管学习什么语言,对文件的操作都应该是要了如指掌的,所以请大家仔细学习. 不说废话,先看fso由哪几个对象组成:   drive对象:包含储存设备的信息,包括硬盘,光驱,ram盘,网络驱动器 drives集合:提供一个物理和逻辑驱动器的列表 file  对象:检查和处理文件 files 集合:提供一个文件夹中的文件列表 folder对象:检查和处理文件夹 folders集合:提供文件夹