geoserver地图服务的一些操作

一、获取所有图层的属性

 await axios.get(
		`/geoserver/wfs?service=wfs&version=1.1.0&request=GetFeature&outputFormat=application/json&typeName=xxxx`
	)

二、点查询

/**
 *点查询
 */

export const POINT_QUERY_FUN = async (mapType, lngLat) => {
	const queryInfo = await axios.get(
		`/geoserver/wfs?SERVICE=WFS&REQUEST=GetFeature&VERSION=2.0.0&TYPENAMES=${mapType}&OUTPUTFORMAT=application/json&COUNT=10000000000000000&SRSNAME=EPSG:4326&CQL_FILTER=INTERSECTS(the_geom,%20SRID=4326;POINT%20(${lngLat.lng}%20${lngLat.lat}))`
	)

	return queryInfo.data
}

三、空间查询

/**
 * 空间框选查询
 */

export const SPACE_QUERY_FUN = async (mapType, e) => {

	const queryInfo = await axios.get(
		`/geoserver/wfs?SERVICE=WFS&REQUEST=GetFeature&VERSION=2.0.0&TYPENAMES=${mapType}&OUTPUTFORMAT=application/json&COUNT=10000000000000000&SRSNAME=EPSG:4326&CQL_FILTER=${`INTERSECTS(the_geom, SRID=4326;POLYGON((${String(
			_.chunk(_.flattenDeep(e.features[0].geometry.coordinates), 2)
				.map(item => item.join(' '))
				.join(', ')
		)})))`}`
	)

	return queryInfo.data
}

四、两图层是否相交

export const SPACE_QUERY_FUN_L = async (ShpName1, ShpName2) => {

	const queryInfo1 = await axios.get(
		`/geoserver/wfs?service=wfs&version=1.1.0&request=GetFeature&outputFormat=application/json&typeName=${ShpName1}`
	)

	const queryInfo2 = await axios.get(
		`/geoserver/wfs?service=wfs&version=1.1.0&request=GetFeature&outputFormat=application/json&typeName=${ShpName2}`
	)


	 const allValues = queryInfo2.data.features
	 const allFeatures = []

	 for (let i = 0; i < allValues.length; i++) {
	 	if (!turf.booleanOverlap(turf.flatten(queryInfo1.data.features[0].geometry), turf.flatten(allValues[i].geometry).features[0].geometry)) {
	 		const converted = turf.toWgs84(allValues[i])

	 		allFeatures.push(converted)
	 	}
	 }
	 if (allFeatures.length) {
	 	return turf.flatten(...allFeatures)
	 } else {
	 	allFeatures.features = []
	 	return allFeatures
	 }

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值