从ODK处理现场数据到OpenStreetMap格式。
项目描述
OSM Fieldwork
将ODK现场数据转换为OpenStreetMap格式,以及其他现场工具。
📖 文档: https://hotosm.github.io/osm-fieldwork/
🖥️ 源代码: https://github.com/hotosm/osm-fieldwork
历史 📖
OSM Fieldwork项目的起源是Rob Savoye,Humanitarian OpenStreetMap Team的高级技术负责人。
2010年,Rob的农村志愿者消防队(他同时也是GNU项目的长期免费软件开发者、消防员、攀岩者、灾害技术支持者)面临挑战:过时的巨幅纸质地图册信息不完整。尽管谷歌的地址和偏远道路覆盖有限,但缺乏移动信号使其无法依赖谷歌进行验证。Rob决心找到解决方案,转而求助OpenStreetMap(OSM)。他的第一步是将建筑轮廓和地址导入OSM,极大地帮助消防队快速轻松地定位地点。响应时间显著减少,几乎减半。鉴于大多数道路都是泥土越野车道路,Rob承担了在OSM中核实高速公路和道路数据的任务。在几年时间里,他勤奋地添加了关于他地区所有高速公路的精确信息,使消防队能够根据每种情况确定适当的响应车辆。一旦Rob成功改进了消防区域地图,他开始扩大到绘制科罗拉多州偏远地区和几个邻州的地图,在大规模森林大火期间证明非常有价值。核实真相成为他工作的一个重要部分,使用移动设备在野外进行。为了简化数据收集过程,Rob大量依赖ODK,并最终创建了额外的软件来协助数据处理,这以前既耗时又繁琐。现在,将数据无缝地从他的手机转移到OSM只需要最小努力。时至今日,Rob仍然每隔几个月进行一次每周的现场测绘,同时不断改进项目中使用的软件。
关于OSM野外工作
Osm-Fieldwork是一个项目,用于将使用ODK收集的数据处理成OpenStreetMap格式。它包括几个实用程序,自动化部分数据流,如创建卫星影像底图和从OpenStreetMap提取的数据,以便与ODK Collect一起使用。许多这些步骤目前仍然是手动过程。Osm-Fieldwork中的所有程序都旨在作为网页的后端运行,但也可以独立和离线运行。独立功能是简单的命令行程序,在终端中运行。它们最初是为在美国西部制作应急响应地图而创建的,这在SOTM-US 2022的演讲中得到了解释,题为OSM For Firefighting。技术和使用方法的大部分内容都在这些技术摘要中进行了说明。目前这些是HOT的Field Mapping Tasking Manager项目后端的一部分。
安装
要安装osm-fieldwork,您可以使用pip。这里有两种选项
- 直接从主分支
pip install git+https://github.com/hotosm/osm-fieldwork.git
- 在PyPi上的最新版本
pip install osm-fieldwork
配置
Osm-Fieldwork可以使用您家目录中的简单配置文件($HOME/.osm-fieldwork)进行配置,或者使用环境变量。
配置文件
配置文件用于存储访问ODK Central服务器的凭据。当然,您必须拥有Central服务器的账户才能使用它。该文件看起来像这样
url=https://foo.org
user=foo@bar.org
passwd=arfood
环境变量
- LOG_LEVEL
如果存在,将更改日志级别。默认为DEBUG。
- ODK_CENTRAL_URL
要连接的ODKCentral服务器的URL。
- ODK_CENTRAL_USER
ODKCentral的用户。
- ODK_CENTRAL_PASSWD
ODKCentral的密码。
- ODK_CENTRAL_SECURE
如果设置为False,将允许不安全的连接到ODKCentral API。否则默认为True。
使用容器镜像
- 可以使用预构建的容器镜像来使用osm-fieldwork脚本。
- 这些镜像包含所有依赖项,因此运行起来非常简单。
运行特定命令
docker run --rm -v $PWD:/data ghcr.io/hotosm/osm-fieldwork:latest json2osm <flags>
交互式运行(用于使用多个命令)
docker run --rm -it -v $PWD:/data ghcr.io/hotosm/osm-fieldwork:latest
注意:输出目录应始终为/data/...以持久化数据。
实用程序
这些程序在本文件中进行了更详细的说明。这里只是一个简要概述。
CSVDump.py
此程序将ODK Collect收集的数据转换为适当的OpenStreetMap标记模式。转换由一个YAML文件控制,因此易于为其他项目修改。输出是两个文件,一个适用于OSM,格式为OSM XML。另一个不应在没有在JOSM中验证转换的情况下上传到OSM。为了从ODK到OSM的转换效率,最好使用XLSForm库作为模板,因为所有内容都设计为协同工作。
basemapper.py
此程序创建卫星影像的基础地图,并为ODK Collect生成mbtiles格式的文件,以及为Osmand生成sqlite数据库文件。当地图数据不足时,图像基础地图非常有用,或者在ODK Collect中选择当前位置而不是站立位置。Osmand的基础地图在地图数据不足的导航中非常有用。可以从ERSI、Bing、USGS地形图或Open Aerial Map下载图像。
make_data_extract.py
此程序从OpenStreetMap数据中提取数据。支持多个输入源,包括本地postgresql数据库或HOT维护的Underpass数据库。
json2osm
odk2csv.py, odk2geojson.py, odk2osm.py
这些程序在离线工作很长时间时使用。它将您的移动设备上的ODK XML格式转换为从ODK Central下载的相同CSV格式,或从中央也转换JSON格式。
odk_client.py
此程序是一个简单的命令行客户端,用于ODK Central服务器。这允许您列出项目、appusers、任务和提交。您还可以删除项目、任务和appusers,但此操作应由开发者使用,因为它直接访问数据库,您可能会丢失所有数据。
filter_data.py
此程序用于支持人道主义数据模型。它从HOT开发的数据模型文档中提取标签和值,并与标签信息数据库进行比较,以帮助调整哪些数据进入OSM或私有输出数据。这是为了防止将不受社区支持的未知标签洪水般地注入OSM。它还过滤数据提取,以便与ODK Collect一起工作。
osm2favorites.py
这是一个有点愚蠢的程序,但它从一个GeoJson文件(通常是OSM数据提取)生成一个带样式的GPX文件,用于OsmAnd。在地面验证地图数据时非常有用,因为它可以用于导航到这些区域。
最佳实践和故障排除
为确保转换数据的质量,请遵循以下最佳实践
-
在上传到OpenStreetMap之前,请始终在JOSM中验证您的转换。
-
使用XLSForm库作为模板,确保您的ODK Collect数据与转换过程兼容。
-
如果您在转换过程中遇到问题,请尝试使用Osm-Fieldwork附带的工具程序来排查常见问题。
有关更多信息,请访问故障排除页面。
遵循这些最佳实践并使用Osm-Fieldwork附带的工具程序,您可以有效地处理ODK到OpenStreetMap格式的数据收集。但是请注意,虽然Osm-Fieldwork已在多个项目中经过测试和使用,但它仍在积极开发中,可能存在需要解决的限制或问题。
XLSForm库
在XForms目录中有一系列支持新HOT数据模型的XLSForms,涵盖了医疗保健、水点、废物分配等多个类别。所有这些XLSForms都旨在实现高效的地图员数据流,编辑现有的OSM数据,并支持数据模型。
数据模型指定了每个数据项的首选标记值,旨在实现标记完整性和正确性。在适当的情况下,每个数据项都分解为基本和扩展调查问题。
什么是XLSForm?
XLSForm是一种基于电子表格的表单设计工具,它允许您使用简单直观的用户界面创建复杂的数据收集表单。使用XLSForms,您可以在计算机上轻松设计和测试表单,然后通过ODK Collect或其他数据收集工具将其部署到移动设备上进行数据收集。XLSForms使用简单和结构化的格式,使您能够轻松地与团队或其他组织共享和协作表单设计。
使用XLSForm库与Osm-Fieldwork
位于XLSForm库XForms目录中的XLSForms已设计为支持HOT数据模型,并具有高效的地图员数据流。这些表单还允许编辑现有的OSM数据,并支持数据模型,为每个数据项指定首选标记值,旨在实现标记完整性和正确性。
以下是使用XLSForm库与Osm-Fieldwork的一些示例
- 从XForms目录下载XLSForm
wget https://github.com/hotosm/xlsform/raw/master/XForms/buildings.xls
-
使用CSVDump将XForm转换为OSM XML
-
使用生成的OSM XML文件与JOSM或其他OSM编辑器验证和编辑数据,然后在上传到OpenStreetMap之前进行。
摘要
对于参与人道主义数据收集的组织来说,XLSForm库是一个宝贵的资源,因为它提供了一组预设计的表单,这些表单针对高效的地图员数据流和标记完整性和正确性进行了优化。通过使用XLSForm库与Osm-Fieldwork,您可以简化数据收集过程并确保数据质量。
Osm-Fieldwork是将ODK数据收集处理为OpenStreetMap格式的强大工具。通过遵循本文档中概述的最佳实践和使用Osm-Fieldwork附带的工具程序,您可以简化数据收集过程并确保转换数据的质量。如果您对osm-fieldwork有任何疑问或问题,请查阅项目文档或寻求项目社区的支援。