一、功能概述
坐标拾取工具是YouGIS顽石工坊空间工具中最具交互性的模块,提供了在地图上直接获取和绘制空间数据的能力。用户可以通过关键字搜索定位目标位置,或在地图上交互式绘制点、线、面等几何图形,并为每个图形添加属性信息,同时将图形和属性信息导出为GeoJSON文件。该工具特别适合实地调查、数据采集、规划设计等需要快速获取空间数据的场景。
二、核心功能
2.1 地图操作类型
关键字搜索:
基于高德地图POI搜索服务
支持地名、地址、兴趣点名称搜索
实时显示搜索结果列表
点击结果自动定位并添加到地图
绘制点:
单击地图添加点要素
自动弹出属性编辑对话框
支持添加名称和备注信息
绘制线:
单击开始绘制,双击结束
支持多段线绘制
实时显示绘制轨迹
绘制面:
单击开始绘制,双击结束
自动闭合多边形
支持复杂面的绘制
2.2 底图切换
支持四种国内主流地图服务:
高德地图(GCJ02):
默认底图
火星坐标系
数据更新及时
天地图(WGS84):
国家地理信息公共服务平台
国际标准坐标系
权威数据源
腾讯地图(GCJ02):
火星坐标系
街景数据丰富
移动端优化好
百度地图(BD09):
百度专用坐标系
POI数据丰富
路况信息准确
2.3 图形管理
绘制列表:
显示所有已绘制的图形
支持折叠/展开,优化界面空间
显示图形序号、名称、类型、备注
提供编辑、定位、查看坐标、删除等操作
图形编辑:
修改图形名称
添加或修改备注信息
实时更新图层列表
图形定位:
快速定位到指定图形
自动调整地图视野
高亮显示目标图形
坐标查看:
显示图形的详细坐标信息
支持一键复制坐标
显示图形的属性信息
2.4 数据导出
支持多种格式导出:
GeoJSON格式:
Web开发标准格式
包含完整的几何和属性信息
易于在其他应用中使用
CSV格式:
表格形式存储
WKT字段存储几何信息
便于在Excel中查看和编辑
GML格式:
OGC标准格式
XML结构化数据
适合标准数据交换
Shapefile格式:
GIS行业标准格式
按几何类型分组导出
可直接在ArcGIS、QGIS中打开
三、使用场景
3.1 实地调查数据采集
场景描述:
在实地调查过程中,需要快速记录调查点的位置和相关信息。
操作流程:
打开坐标拾取工具
选择合适的底图
搜索目标区域或直接在地图上定位
选择"绘制点"模式
在目标位置点击添加点
在弹出的对话框中输入名称和备注
重复步骤5-6完成所有调查点的标注
导出为Shapefile或GeoJSON格式
应用实例:
环境监测点位采集
文物古迹位置记录
商业网点调查
基础设施巡检
3.2 规划方案绘制
场景描述:
在规划设计初期,需要在地图上快速绘制规划方案的草图。
操作流程:
选择合适的底图作为参考
使用"绘制线"功能绘制道路规划
使用"绘制面"功能绘制用地规划
使用"绘制点"功能标注重要节点
为每个图形添加详细的说明信息
导出为GeoJSON用于进一步设计
应用实例:
城市规划方案
景观设计方案
交通路线规划
土地利用规划
3.3 兴趣点标注
场景描述:
收集和整理某个区域内的兴趣点(POI)信息。
操作流程:
使用关键字搜索功能查找目标POI
从搜索结果中选择需要的POI
系统自动添加到地图并创建点要素
查看和编辑POI的属性信息
继续搜索和添加其他POI
导出为CSV格式用于数据分析
应用实例:
旅游景点收集
餐饮店铺整理
公共设施统计
竞品门店分析
3.4 路线规划
场景描述:
规划和记录行进路线,如徒步路线、巡检路线等。
操作流程:
选择"绘制线"模式
沿着规划路线依次点击关键节点
双击结束绘制
添加路线名称和说明
使用"绘制点"标注沿途重要地点
导出为GeoJSON用于导航应用
应用实例:
徒步路线规划
配送路线设计
巡检路线记录
旅游线路设计
四、界面设计
4.1 地图操作区
位置: 页面主体区域
组成:
地图操作类型选择(单选框)
清除所有按钮(右侧对齐)
搜索框(关键字搜索模式下显示)
绘制提示(绘制模式下显示)
交互:
切换操作类型时自动启用相应功能
搜索结果浮动显示在地图上方
绘制过程中实时显示轨迹
4.2 绘制列表
位置: 地图右上角,可折叠
特点:
默认收起,有图形时自动展开
显示蓝色脉冲指示器提示有内容
点击切换按钮展开/收起
半透明背景,不遮挡地图
内容:
图形序号和名称
图形类型(点/线/面)
备注信息
操作按钮(编辑、定位、查看坐标、删除)
4.3 底图选择
位置: 地图卡片头部右侧
功能:
下拉选择底图类型
切换时自动调整坐标系
保持当前视野范围
4.4 属性编辑对话框
触发时机:
绘制完成后自动弹出
点击编辑按钮手动打开
内容:
名称输入框
备注文本域
确定和取消按钮
行为:
新绘制时取消会删除图形
编辑时取消会保留原信息
五、技术实现
5.1 地图初始化
initMap() {
this.olMap = new OLMap('map', {
baseMapType: this.baseMapType,
center: [116.397428, 39.90923],
zoom: 10,
onDrawEnd: this.onDrawEnd
})
}
5.2 绘制交互
startDraw(type) {
// 移除现有的绘制交互
if (this.drawInteraction) {
this.map.removeInteraction(this.drawInteraction)
}
// 创建新的绘制交互
this.drawInteraction = new Draw({
source: this.drawLayer.getSource(),
type: type
})
// 绘制完成事件
this.drawInteraction.on('drawend', (event) => {
const feature = event.feature
const geometry = feature.getGeometry()
const coordinates = this.transformCoordinates(geometry, 'toLonLat')
// 创建要素对象
const featureObj = {
id: this.generateId(),
type: type,
coordinates: coordinates,
properties: {
name: `${this.getTypeName(type)}${this.getFeatureCount(type) + 1}`,
remark: ''
}
}
this.features.push(featureObj)
this.showEditDialog = true
})
this.map.addInteraction(this.drawInteraction)
}
5.3 POI搜索
async searchByKeyword() {
if (!this.searchKeyword.trim()) {
ElMessage.warning('请输入搜索关键词')
return
}
this.searching = true
try {
const results = await searchByKeyword(this.searchKeyword)
this.searchResults = results
if (results.length === 0) {
ElMessage.info('未找到相关结果')
}
} catch (error) {
console.error('搜索失败:', error)
ElMessage.error('搜索失败,请稍后重试')
} finally {
this.searching = false
}
}
5.4 数据导出
async confirmExport() {
const exportFeatures = this.features.map(f => ({
id: f.id,
type: f.type,
coordinates: f.coordinates,
properties: f.properties
}))
try {
let blob = null
let filename = ''
switch (this.exportFormat) {
case 'geojson':
const geojsonData = JSON.stringify(exportToGeoJSON(exportFeatures), null, 2)
blob = new Blob([geojsonData], { type: 'application/json' })
filename = 'features.geojson'
break
case 'csv':
const csvData = exportToCSV(exportFeatures)
blob = new Blob([csvData], { type: 'text/csv' })
filename = 'features.csv'
break
case 'shapefile':
ElMessage.info('正在生成Shapefile,请稍候...')
blob = await exportToShapefile(exportFeatures)
filename = 'features.zip'
break
}
if (blob) {
saveAs(blob, filename)
ElMessage.success('导出成功')
}
} catch (error) {
console.error('导出失败:', error)
ElMessage.error('导出失败: ' + error.message)
}
}
六、使用技巧
6.1 快速定位
方法一: 使用关键字搜索
输入地名、地址或POI名称
从搜索结果中选择目标位置
系统自动定位并添加标注
方法二: 直接在地图上操作
拖动地图到目标区域
使用鼠标滚轮缩放
切换底图获得更好的参考
6.2 精确绘制
绘制线:
沿着道路或边界依次点击关键节点
节点不宜过密或过疏
双击结束绘制
绘制面:
按顺时针或逆时针方向绘制
确保首尾点重合(系统自动闭合)
避免自相交
6.3 批量操作
批量添加:
选择操作类型后连续绘制
每次绘制完成后快速填写信息
使用默认名称可以加快速度
批量编辑:
绘制完成后统一编辑属性
使用有意义的命名规则
添加详细的备注信息
6.4 数据管理
定期保存:
完成一批数据后及时导出
使用不同的文件名区分批次
保留原始数据备份
质量检查:
使用定位功能逐个检查
查看坐标信息验证位置
在不同底图上对比验证
七、常见问题
7.1 搜索不到目标位置?
可能原因:
关键词不够准确
目标位置较偏僻,POI数据库中没有
网络连接问题
解决方法:
尝试使用更具体的关键词
使用周边已知地点定位后手动绘制
检查网络连接
7.2 绘制的图形位置不准确?
可能原因:
底图精度不够
缩放级别不合适
坐标系不匹配
解决方法:
切换到更清晰的底图
放大地图到合适的级别
确认使用正确的底图和坐标系
7.3 如何修改已绘制的图形?
当前版本:
支持修改图形的属性信息(名称、备注)
不支持修改图形的几何形状
解决方法:
删除错误的图形
重新绘制正确的图形
7.4 导出的Shapefile在GIS软件中打开位置不对?
原因:
导出的Shapefile使用WGS84坐标系,而绘制时使用的是其他坐标系(如GCJ02)。
解决方法:
在GIS软件中进行坐标转换
或在绘制前切换到天地图(WGS84)底图
八、最佳实践
8.1 数据采集规范
统一命名: 使用统一的命名规则,如"类型_序号_名称"
完整备注: 记录采集时间、采集人、数据来源等信息
分类管理: 不同类型的数据分批采集和导出
及时保存: 完成一定数量后及时导出备份
8.2 质量控制
现场核对: 实地采集时现场核对位置准确性
多源验证: 使用多个底图交叉验证
逻辑检查: 检查数据的逻辑一致性
抽样复核: 随机抽取部分数据进行复核
8.3 效率提升
熟悉快捷操作: 熟练使用各种操作模式
准备参考资料: 提前准备好需要标注的清单
合理分工: 多人协作时明确分工
使用模板: 建立标准的属性填写模板
九、总结
坐标拾取工具是YouGIS顽石工坊空间工具中最具实用价值的模块之一,具有以下特点:
操作直观: 所见即所得的交互方式,易于上手
功能完整: 支持搜索、绘制、编辑、导出全流程
底图丰富: 集成多个主流地图服务,满足不同需求
格式多样: 支持多种标准格式导出,便于后续使用
界面友好: 绘制列表可折叠,优化界面空间利用
通过本工具,用户可以快速完成空间数据的采集和整理工作,大大提高了GIS数据获取的效率。
相关文章:


评论区