REST(REpresentational State Transfer)的基本思想是依靠指定资源的一组固定的操作,而这些资源的表达在检索和设置方面的信息是相同的。换言之,如果我们以一个XML格式去检索数据,那么还可以用相同的XML将数据发回给服务器进行设置。
资源的操作是通过HTTP中的标准基本要素(GET,DELETE,PUT,POST,HEAD等)来实现的。每个资源用一个标准的URI来表示[1]。
1.安装REST扩展
在http://geoserver.org/display/GEOS/Download下载RESTCONFIG的jar包后,将其拷贝到GeoServer的WEB-INF/lib目录下即可[2]。
2.REST的使用
2.1 安装curl
curl是一个非常方便的执行HTTP请求和传输文件的工具[3]。在http://curl.haxx.se/下载curl的压缩包,解压即可使用。
2.2 REST的使用
2.2.1 添加新的工作区
通过POST请求,新建一个名为”zhaoyong”的工作区,执行一下命令:
curl -u admin:geoserver -v -XPOST -H “Content-type: text/xml” /
-d “<workspace><name>zhaoyong</name></workspace>” /
http://162.105.17.222:8080/geoserver/rest/workspaces
响应结果如下图所示:
接着,调用下面的命令,用GET请求以XML格式检索新建的工作区:
curl -XGET -H "Accept: text/xml" http:// curl -XGET -H "Accept: text/xml" /
http:// 162.105.17.222:8080/geoserver/rest/workspaces/zhaoyong
在这个例子中,zhaoyong是工作区的名称。
响应结果如下图所示:
2.2.2 上载Tif文件
首先将Tif文件和相应的Prj、Tfw文件以zip形式打包保存在当前目录下。通过PUT请求将其上载到指定的工作区,执行以下命令:
curl -u admin:geoserver -XPUT -H "Content-type:application/zip" --data-binary @test.zip /
http://162.105.17.222:8080/geoserver/rest/workspaces/zhaoyong/coveragestores/test/file.geotiff
在这个例子中,zhaoyong是工作区的名称,test是数据源的名称,geotiff是GeoTIFF文件对应的扩展名。
响应结果如下图所示:
这时,我们便可以在浏览器浏览我们发布的数据了,如下图所示:
2.2.3 发布指定文件夹中的矢量数据
首先确保我们需要发布的数据在指定文件夹中有名称相同而后缀名不同的六个文件(**.dbf, **.prj, **.shp, **.shx, **.qix, **.fix)。我们需要编辑一个XML的描述文件,如下图所示:
这里,注明了datastore的名称,数据存储的文件夹等信息。
通过POST请求将指定数据发布到指定工作区,执行以下命令:
curl -u admin:geoserver -XPOST -H "Content-type:text/xml" -d @test.xml /
http://162.105.17.222:8080/geoserver/rest/workspaces/zhaoyong/datastores.xml
在这个例子中,test.xml是我们刚才编辑XML文件,zhaoyong是我们指定的工作区的名称。
接着,我们在通过POST请求,添加featureType信息,执行一下命令:
curl -u admin:geoserver -XPOST -H "Content-type:text/xml" -d /
"<featureType><name>bc_border</name></featureType>" /
http:// 162.105.17.222:8080/
/geoserver/rest/workspaces/zhaoyong/datastores/bc_border/featuretypes
接着,我们便可以在浏览器中浏览我们发布的数据了,如下图所示:
参考文献:
[1] http://docs.geoserver.org/2.0.0/user/extensions/rest/overview.html
[2] http://docs.geoserver.org/2.0.0/user/extensions/rest/installation.html
[3] http://docs.geoserver.org/2.0.0/user/extensions/rest/rest-config-examples-curl.html