如何从无到有创造GIS数据

介绍

在实际项目执行过程中,我们常常面临无法通过网络获取某些GIS(地理信息系统)数据的情况。这种情况可能由数据的敏感性和安全性问题导致,或者是因为复杂的获取流程。不管遇到哪种障碍,当必要的数据不可获得时,我们必须自己动手创造这些数据。本文深入探讨了这个需求,提供了一个实用的指南,介绍如何快速有效地创造几种基本的GIS数据。

工具准备

工具 说明
r2v 可以将位图转换为矢量数据的软件
illustrator 矢量图像设计软件
QGIS 开源GIS工具,提供数据的显示、编辑和分析功能
CesiumJS 用于做GIS数据展示
CesiumLab 可以将SHP数据转为3DTiles建筑白模
水经注 GIS数据下载工具,Level高的数据需要收费

行政区域边界

数据说明

在网上查找我国的行政区域划分时,通常能够获取到省级、地级、县级和乡级(含镇、民族镇、乡、民族乡、街道办事处)等四级完整的行政区划数据。然而,村居级别的详细信息往往并不统一公开发布在网络上,这个数据我们可以通过位图转矢量的方式获取。

操作步骤

  1. 获取原始图片,可以通过拍摄纸质地图或者下载电子版地图得到原始文件,尽量正面高清光照均匀无投影,以便后续操作。
  2. 使用图像处理工具(photoshop之类)处理原始图片,清除文字、斑纹,仅保留点线面之类的地理信息,提高对比度,让背景尽量纯净无杂色。
  3. 使用工具进行边界识别并自动矢量化,导出.shp格式的文件,后面会介绍位图矢量化的三种方法。
  4. 把矢量数据拖到QGIS中修复处理,以卫星影像图垫底,把文件导入QGIS创建图层,调整尺寸、角度、位置以契合影像图,然后将破碎的区域边界修复。
  5. 完整的边界线图层可以直接转换为多边形数据图层。另外还需要补充行政区域中心,新建点图层后,参照原始图片绘制中心点即可。
  6. 将每个图层数据导出geojson数据格式,导出前记得选择合适的坐标系(默认wgs84),就可以在地图引擎上使用了。

位图矢量化的三种方法

  1. 使用chatGPT识别图片并返回svg矢量图,不得不说AI真的很强大,它马上写了个python脚本并生成了最终文件,可惜出来的数据太破碎了后期加工成本太高,等我学会了用python微调,这应该会是最便捷的方法。

  2. 使用illustrator自带的位图转矢量功能,这个方法效率也挺高的,还可以在转换完成后直接做修复处理,但问题是对原始图片要求较高,对比度较差的区域转换出来的内容破碎感还是比较严重

  3. 使用专业的r2v工具将位图转换为矢量,这个工具的好处就是它可以提前调整好边界阈值,最终出来的数据,相比之下破碎内容是最少的

建筑轮廓

数据说明

高质量的城市建筑轮廓数据需要通过专业的遥感卫星、航拍摄影、激光雷达(LiDAR)等手段进行精确测绘,并结合实地调查予以修正和完善,这是一项耗时耗力且成本高昂的工作,导致拥有此类数据的机构或个人不愿意轻易公开。如果项目对城市模型的精细化要求没有特别高,可以在AI技术的辅助下快速生成一些数据。

操作步骤

  1. 使用GIS数据下载工具(水经注等)下载高清的卫星影像图,截取项目展示所需的区域即可,精细度级别需要L18(空间分辨率1.19米)或者以上,导出TIF格式文件。

  2. 使用阿里云的AI-SEG进行单目标提取,直接生成SHP格式的矢量数据,极大程度减少人工绘制工作量。

  3. AI识别当然会有缺陷,这部分缺陷需要识别参数微调和人工二次处理来修复,在步骤二经过微调或者尽可能准确的数据后,直接导入到QGIS进行二次处理,比如粘连在一起的建筑轮廓,需要手工把它们切开;批量给建筑轮廓赋予名称、面积、高度等属性。

  4. 将SHP转换为3DTiles模型图层。在QGIS将SHP格式数据导出,打开Cesiumlab通用模型切片功能进行转换,即可快速生成白模。

  5. 如果对白模不满意,可以在转换前准备好各种条件的模型模型贴图,并设置好贴图规则(比如高度为1层的模型使用贴图1,高度为2层的模型使用贴图2等),这些规则的可用参数就是步骤3我们为每个建筑轮廓设定的属性。

  6. 导出3DTiles文件在地图引擎中使用。cesiumlab导出的文件包可以作为静态文件独立部署,或者放到项目工程中,调用入口文件tileset.json这些就不赘述了,可以看以往文章《在高德地图中实现3DTiles》

总结

以上就是在面对无法通过互联网获取GIS数据的情况时,我们可以尝试的方法,这里面全是个人经验总结。可以发现使用了很多工具,碍于篇幅无法对这些工具的操作步骤开展细说,即使展开了可能也会不慎全面。在实践中我们会遇到各种无法预料的问题,且将本文作为指南,具体操作中的问题和解决方法可以由作为读者的你来分项。

相关链接

CesiumLab 数据转换平台

AI Earth 地理数据云平台

水经注 地理数据下载工具

相关推荐
以对_1 分钟前
uview表单校验不生效问题
前端·uni-app
程序猿小D1 小时前
第二百六十七节 JPA教程 - JPA查询AND条件示例
java·开发语言·前端·数据库·windows·python·jpa
奔跑吧邓邓子1 小时前
npm包管理深度探索:从基础到进阶全面教程!
前端·npm·node.js
前端李易安2 小时前
ajax的原理,使用场景以及如何实现
前端·ajax·okhttp
汪子熙2 小时前
Angular 服务器端应用 ng-state tag 的作用介绍
前端·javascript·angular.js
Envyᥫᩣ2 小时前
《ASP.NET Web Forms 实现视频点赞功能的完整示例》
前端·asp.net·音视频·视频点赞
Мартин.6 小时前
[Meachines] [Easy] Sea WonderCMS-XSS-RCE+System Monitor 命令注入
前端·xss
昨天;明天。今天。8 小时前
案例-表白墙简单实现
前端·javascript·css
数云界8 小时前
如何在 DAX 中计算多个周期的移动平均线
java·服务器·前端
风清扬_jd8 小时前
Chromium 如何定义一个chrome.settingsPrivate接口给前端调用c++
前端·c++·chrome