安装geoserver
安装环境:
Windows 10 21H1
,系统5位数版本为:19043.1052
。
1 安装JDK
-
首先需要安装Java运行时环境(JRE)。GeoServer需要Java 8或Java 11环境,由AdoptOpenJDK Windows安装程序提供,下载地址:adoptopenjdk.net/,我这里选择了8版本,点击下方按钮即可下载。
这里是GeoServer官网推荐的安装包,也可以到Oracle官网下载JDK。
-
安装则按默认设置即可,我们可以自定义安装位置(默认位置为
C:\Program Files\Eclipse Foundation\jdk-8.0.302.8-hotspot\
),我这里设置为了C:\Java\jdk-8.0.302.8-hotspot\
。安装好之后会自动添加Path环境变量,无需手动设置,我们在命令行输入java-version
命令即可验证。
2 安装GeoServer
- 下载GeoServer安装包,地址:geoserver.org/download/,这里我们选择稳定版,点击【Production】选项卡,然后点击版本号即可跳转到该版本的下载页面。
- 点击【Platform Independent Binary】选项下载独立的二进制安装包即可。
- 下载完成后解压即可使用,解压位置例如:
C:\geoserver-2.19.2
。
3 设置环境变量
- 设置
JAVA_HOME
环境变量:C:\Java\jdk-8.0.302.8-hotspot
,这是安装JDK或JRE的位置,而Path
变量在安装AdoptOpenJDK时会被自动添加,也可以将Path
变量修改为%JAVA_HOME%\bin
; - 设置
GEOSERVER_HOME
环境变量:我这里为C:\geoserver-2.19.2
,这是安装GeoServer的位置; - 设置
GEOSERVER_DATA_DIR
环境变量,默认为:%GEOSERVER_HOME%\data_dir
,这是GeoServer数据目录的位置。
4 运行GeoServer
- 打开GeoServer的
bin
目录,双击运行startup.bat
文件即可,将出现一个命令行窗口并持久存在。此窗口包含诊断和故障排除信息。此窗口必须保持打开状态,否则GeoServer将关闭。 - 打开浏览器输入默认访问地址:
http://localhost:8080/geoserver
,即可打开GeoServer Web管理界面。如下如所示:若打开欢迎页面则表示GeoServer已被成功运行。
5 停止运行GeoServer
关闭命令行窗口或运行bin
目录下shutdown.bat
文件即可。
6 GeoServer的卸载
将GeoServer停止运行后删除其安装目录即可。
7 GeoServer的登录
-
在打开访问地址:
http://localhost:8080/geoserver
在页面顶部右侧输入:User name:admin
,Password:geoserver
,点击【登录】按钮即可。 -
登录后,欢迎屏幕将更改为显示可用的管理功能。这些主要显示在页面左侧的菜单中。例如点击【Layer Preview】选项。
-
如下图,单击给定图层的【OpenLayers】选项进行预览,也可以在右上方搜索框搜索图层。
-
单击列标题可以对图层进行排序
===
发布shp服务
第一步:创建工作区
第二步:编辑工作区 输入工作区名称 输入一个URI地址点击提交
工作区是由一个名字和一个名称空间URI(统一资源标识符)定义。工作区的名称仅限于10个字符,不能包含空格。URI是类似于URL,除了的URI不必指向Web上的实际位置,并且只需要一个唯一的标识符。对于工作空间的URI,建议使用与项目相关联的URL。例如,www.openplans.org/topp是URI为“T…
第三步:创建store,发布shp数据文件夹
shp文件最好放到这里:
到这里一张地图就发布成功了,
地图是否发布成功了:
发布其他发shp文件作为服务
最后一点我们发布的是多个shp 刚才只是发布了一张剩下的需要接着发
最后一步:预览下
点击openLayers : 看到地图正常显示 表示成功.如果不能正常显示那就去改SRS就OK 了
WFS--空间查询
WFS,即 Web 要素服务,支持对地理要素的插入,更新,删除,检索和发现服务。不同于 WMS(Web 地图服务)的是,该服务专注于要素的地理信息,而忽略其渲染信息,简化了返回信息。
一个图层的 WFS 服务查看方法是在 Layer Preview 页面,选择 WFS 下的 GeoJSON(以 JSON 数据形式展现要素信息,方便解析),查看该图层的要素信息。
解析的参数为:
其中各个参数意义可以参照此篇文章:www.cnblogs.com/naaoveGIS/p…
这个请求,查询的是此图层的全量数据(返回要素数量受 maxFeatures 参数限制),我们可以添加过滤条件,得到我们想要的数据(非常强大的功能,可以实现非常多的地理查询操作),下面我就以几个空间查询的例子来举例说明一下。
1、划分区域,查询区域内的点
请求方式:
http://localhost:28080/geoserver/sf/ows?service=WFS&version=1.0.0
&request=GetFeature
&typeName=sf:bugsites
&maxFeatures=50
&outputFormat=application%2Fjson
&filter=
<Filter xmlns="http://www.opengis.net/ogc" xmlns:gml="http://www.opengis.net/gml">
<Intersects>
<PropertyName>the_geom</PropertyName>
<gml:Polygon>
<gml:outerBoundaryIs>
<gml:LinearRing>
<gml:coordinates>604264,4919992 604340,4913350 611059,4915487 604264,4919992</gml:coordinates>
</gml:LinearRing>
</gml:outerBoundaryIs>
</gml:Polygon>
</Intersects>
</Filter>
空间关系
参数说明
A:此次采取的几何方式是 Intersects,即采用面与点相交,得到这个面里面的点数据
B:多边形经纬度为一个数组,第一个点经纬度要与最后一个点一致,保证多边形的闭合
C:过滤条件里有一个 PropertyName 属性,为必须字段,根据图层的属性来查看,具体查看方式为点击图层,然后点及要查询的图层名称,要素类型的第一个属性,即为该字段的值,过程如下图所示
查询结果
2、 传入点坐标,查询该点所在的区域信息
请求方式
http://localhost:28080/geoserver/topp/ows?service=WFS&version=1.0.0
&request=GetFeature&typeName=topp:tasmania_water_bodies&maxFeatures=50
&outputFormat=application%2Fjson
&filter=<Filter xmlns="http://www.opengis.net/ogc" xmlns:gml="http://www.opengis.net/gml">
<Intersects>
<PropertyName>the_geom</PropertyName>
<gml:Point>
<gml:coordinates>146.200,-42.700</gml:coordinates>
</gml:Point>
</Intersects>
</Filter>
空间关系
查询说明:
A:此次采取的几何方式是 Intersects,即采用点与面相交,得到包含这个点的面数据
查询结果:
3、 查看被线穿过的区域
请求方式:
http://localhost:28080/geoserver/topp/ows?service=WFS&version=1.0.0
&request=GetFeature&typeName=topp:tasmania_water_bodies&maxFeatures=50
&outputFormat=application%2Fjson
&filter=
<Filter xmlns="http://www.opengis.net/ogc" xmlns:gml="http://www.opengis.net/gml">
<Crosses>
<PropertyName>the_geom</PropertyName>
<gml:LineString>
<gml:coordinates>146.62903,-41.85171 147.27448,-42.18130</gml:coordinates>
</gml:LineString>
</Crosses>
</Filter>
空间关系
查询结果
注意
- 在使用geoserver的时候,传入的多个坐标是通过空格来进行分割的哦!!! 示例:
function test(coordinates) {
let coordinatesText = coordinates.join(' ')
let filter = `<Filter xmlns="http://www.opengis.net/ogc" xmlns:gml="http://www.opengis.net/gml">
<Intersects>
<PropertyName>the_geom</PropertyName>
<gml:Polygon>
<gml:outerBoundaryIs>
<gml:LinearRing>
<gml:coordinates>${coordinatesText}</gml:coordinates>
</gml:LinearRing>
</gml:outerBoundaryIs>
</gml:Polygon>
</Intersects>
</Filter>`
const geoServerPath = 'http://192.168.5.44:9000/geoserver/ChongQing/ows'
// 发送请求获取geojson
axios.get(geoServerPath, {
params: {
service: 'WFS',
version: '1.0.0',
request: 'GetFeature',
typeName: 'ChongQing:Shopping',
maxFeatures: '200',
outputFormat: 'application/json',
filter
}
})
}