摘要: 为什么要考虑将空间感知的 GeoJSON 转换为看似更简单的 CSV 格式呢?答案在于 CSV 文件的多功能性和可访问性。它们不只是简单,更代表了与广泛软件的兼容性、易用性以及数据访问的民主化。 1.使用 QGIS 将 GeoJSON 转换为 CSV 使用 ...
为什么要考虑将空间感知的 GeoJSON 转换为看似更简单的 CSV 格式呢?答案在于 CSV 文件的多功能性和可访问性。它们不只是简单,更代表了与广泛软件的兼容性、易用性以及数据访问的民主化。
1.使用 QGIS 将 GeoJSON 转换为 CSV
使用 QGIS 将 GeoJSON 转换为 CSV 是一个简单的过程,涉及几个步骤。QGIS 是一个功能强大的开源地理信息系统,支持多种文件格式,包括 GeoJSON 和 CSV。以下是在 QGIS 中将 GeoJSON 转换为 CSV 的选项:
使用“另存为”功能
- 加载 GeoJSON 文件:首先将 GeoJSON 文件添加到 QGIS 地图画布。 可通过将文件拖入 QGIS 或使用“图层”菜单, 选择“添加图层”>“添加矢量图层”来完成此操作。
- 导出为 CSV:右键单击“图层面板”中的图层, 选择“导出”, 选择“要素另存为”。 在出现的对话框中, 将“格式”设置为“逗号分隔值 [CSV]”。
- 配置导出设置:选择所需的文件名和位置, 还可以选择要包含在 CSV 中的字段(属性)、坐标精度以及是否导出几何图形(作为 WKT,众所周知的文本)。
- 保存:单击“确定”将图层导出到 CSV 文件。
使用“处理工具箱”
- 打开处理工具箱:可在菜单栏的“处理”下找到它, 然后选择“工具箱”。 或者,也可以按键盘上的
Ctrl+Alt+T
。 - 搜索“转换格式”:在处理工具箱的搜索栏中, 输入“转换格式”或“重新投影图层”, 然后查找提到转换矢量格式的工具。 确切的名称可能会根据 QGIS 版本而有所不同。
- 配置工具:选择输入图层(GeoJSON 文件)、输出格式 (CSV), 并指定任何其他选项, 例如字段选择、几何转换(如有必要)和文件名。
- 运行工具:单击“运行”以执行该过程。 完成后,将获得 CSV 文件。
2.使用 GDAL(地理空间数据抽象库)将 Geojson 转换为 CSV
使用 GDAL(地理空间数据抽象库)将 GeoJSON 转换为 CSV 是一种有效的方法,特别是对于那些熟悉命令行界面的人来说。GDAL 包含 ogr2ogr
命令行实用程序,该实用程序对于在不同空间数据格式之间进行转换非常强大。操作方法如下:
先决条件
确保系统上安装了 GDAL。GDAL 适用于各种操作系统,包括 Windows、macOS 和 Linux。如果未安装,可从官方 GDAL 网站下载它,或者使用包管理器安装它,例如 brew
在 macOS、apt
Ubuntu 或 conda
Anaconda 环境中。
基本转换(仅限属性)
要将 GeoJSON 文件转换为仅包含属性数据(无几何图形)的 CSV 文件,可在终端或命令提示符中使用以下命令:
ogr2ogr -f "CSV" output.csv input.geojson
替换 input.geojson
为 GeoJSON 文件的路径和 output.csv
所需的输出 CSV 文件路径。
将几何包含为 WKT
如果想以众所周知的文本 (WKT) 格式将几何图形包含在 CSV 文件中,则可以使用该 -lco GEOMETRY=AS_WKT
选项。这告诉 GDAL 在 CSV 中为表示为 WKT 的几何图形添加一列,此操作将告诉 GDAL 在 CSV 中为表示为 WKT 的几何图形添加一列。
ogr2ogr -f "CSV" output.csv input.geojson -lco GEOMETRY=AS_WKT
指定字段
要指定 CSV 中包含哪些字段,可使用该 -select
选项,后跟逗号分隔的字段名称列表。例如,如果只想包含名为 Field1
和的字段 Field2
,则可以使用:
排除几何形状
如果 GeoJSON 包含几何图形,但只需要 CSV 中的属性数据,则只需不包含该 -lco GEOMETRY=AS_WKT
选项即可。GDAL 将忽略几何图形,仅包含 CSV 文件中的属性数据。
其他选项
GDAL 的 ogr2ogr 实用程序提供了许多其他选项,用于在转换过程中转换和过滤数据。例如,可以:
- 使用该
-where
选项可根据属性值过滤要素。 - 使用该
-spat
选项应用空间查询。 - 使用该选项将数据重新投影到不同的坐标系
-t_srs
。
有关选项的完整列表,可以查看官方 ogr2ogr
文档或使用 ogr2ogr --help
命令。
示例:
ogr2ogr -f "CSV" output.csv input.geojson -lco GEOMETRY=AS_WKT
此命令转换 input.geojson
为名为的 CSV 文件 output.csv
,其中包括 CSV 中 WKT 格式的每个要素的几何形状。
Note:
请记住根据具体需求和 GeoJSON 文件的结构调整文件路径和选项。
3.使用 Python 将 GeoJSON 文件转换为 CSV 文件
要使用 Python 将 GeoJSON 文件转换为 CSV 文件,可以使用库的组合,例如 geopandas
用于处理地理空间数据和 pandas
用于 CSV 输出的库。pandas
GeoPandas 利用、 shapely
、 fiona
和的功能为 pyproj
地理空间数据操作提供直观的界面,包括读取和写入不同的格式。
以下是有关如何执行转换的分步指南:
第1步:安装GeoPandas和Pandas
如果尚未安装 GeoPandas 和 Pandas,可以使用 pip
。打开终端或命令提示符并运行:
pip install geopandas pandas
第2步:读取 GeoJSON 并转换为 CSV
下面是一个简单的 Python 脚本,它使用 GeoPandas 读取 GeoJSON 文件,将属性数据导出到 CSV 文件。如果 GeoJSON 文件包含几何信息并且希望保留它,则需要在导出之前将几何信息转换为众所周知的文本 (WKT) 等格式。
import geopandas as gpd
# Path to your GeoJSON file
geojson_path = 'input.geojson'
# Desired output CSV file path
csv_path = 'output.csv'
# Read the GeoJSON file
gdf = gpd.read_file(geojson_path)
# Optionally, convert the geometry to a string if you want to include it in the CSV
# This will convert the geometry to Well-Known Text (WKT) format
gdf['geometry'] = gdf['geometry'].apply(lambda x: x.wkt)
# Save the DataFrame to CSV
gdf.to_csv(csv_path, index=False)
包括几何
在上面的脚本中,该行 gdf['geometry'] = gdf['geometry'].apply(lambda x: x.wkt)
负责将几何列转换为 WKT 格式,使其成为 CSV 中可读的字符串。如果不希望在 CSV 中包含几何信息,可以跳过此步骤并直接将其导出 DataFrame
到 CSV 文件。
选择性字段
如果只想在 CSV 中包含特定字段(属性),则可以在保存之前选择这些列:
# Assuming you only want to include 'Field1' and 'Field2' in the CSV
gdf[['Field1', 'Field2', 'geometry']].to_csv(csv_path, index=False)
将 'Field1'
和替换 'Field2'
希望包含在 GeoJSON 文件中的字段的实际名称。
其他注意事项
GeoPandas 和 Pandas 提供了广泛的操作地理空间数据的功能,因此可以在导出到 CSV 之前执行复杂的过滤、转换和分析。请记住,GeoJSON 文件可能包含复杂的几何图形(例如,多边形、多边形),当转换为 WKT 格式时,可能会产生非常长的字符串。如有必要,请确保 CSV 处理流程能够适应这种情况。
这种方法提供了一种灵活而强大的方法来在 Python 中处理地理空间数据,从而可以轻松地在 GeoJSON 和 CSV 格式之间进行转换,同时还提供了在两者之间进行复杂数据处理步骤的可能性。
有关将 GeoJson 转换为 CSV 的常见问题
什么是 GeoJSON,它与 CSV 有何不同?
GeoJSON 和 CSV(逗号分隔值)都是用于存储和交换数据的流行格式,但它们有不同的用途,特别是在处理地理空间信息的方式方面。
什么是 GeoJSON?
GeoJSON 是一种用于编码各种地理数据结构的格式。它基于 JavaScript 对象表示法 (JSON),使其易于在支持 JSON 的 Web 应用程序和编程语言中阅读和使用。GeoJSON 可以表示简单的地理特征及其非空间属性,但它特别适合对复杂的地理结构进行编码,例如:
- 点(例如位置)
- LineStrings(例如街道、高速公路、边界)
- 多边形(例如国家、地区、地区)
- 用于更复杂结构的多点、多线串、多多边形和几何集合
GeoJSON 对象可能看起来像这样:
{
"type": "Feature",
"geometry": {
"type": "Point",
"coordinates": [-105.01621, 39.57422]
},
"properties": {
"name": "Denver",
"population": 682545
}
}
什么是 CSV?
CSV 是一种简单的文件格式,用于存储表格数据,例如电子表格或数据库。CSV 文件中的每一行对应于表中的一行,列之间用逗号(或有时用分号等其他分隔符)分隔。CSV 文件很容易生成,并且可以使用简单的文本编辑器或电子表格软件进行编辑。表示与 GeoJSON 示例相同信息的 CSV 文件可能如下所示:
name,population,coordinates
Denver,682545,"-105.01621, 39.57422"
主要差异
- 地理空间编码: GeoJSON 专门用于编码地理空间数据, 支持各种几何图形(点、线、多边形), 使其更适合地图和地理应用。 CSV 虽然用途广泛, 但本质上并不支持空间数据结构; 空间信息必须编码为文本(例如,一对逗号分隔的坐标)。
- 数据结构: GeoJSON 是一种结构化格式, 由于其 JSON 基础, 可表示复杂的分层数据。 CSV 是扁平的表格,具有简单的行列结构。
- 人类可读性:两种格式都是人类可读的, 但 GeoJSON 基于 JSON 的结构对于熟悉 JSON 的人来说更容易阅读和理解。 CSV 的简单性使其易于被普遍理解, 但它可能需要额外的上下文或复杂数据的定义。
- 兼容性: GeoJSON 丰富的地理数据表示使其与 Web 绘图工具和 GIS 软件高度兼容。 CSV 受到各种应用程序的广泛支持, 从电子表格编辑器到数据库管理系统, 但可能需要额外的处理才能有效地用于地理空间目的。
可以将 GeoJSON 文件转换为 CSV 而不会丢失空间数据吗?
是的,可将 GeoJSON 文件转换为 CSV,而不会丢失空间数据,但该方法取决于希望如何以 CSV 格式表示空间信息。GeoJSON 本质上支持点、线和多边形等空间数据结构,而 CSV 格式本身并不支持这些数据结构。但是,可将空间信息作为文本包含在 CSV 文件中,通常使用以下方法之一:
坐标作为文本列
对于点数据,可将坐标转换为 CSV 中的两个单独的列(例如,纬度和经度)。对于直线和多边形,可将它们表示为坐标对列表或更复杂的字符串。
众所周知的文本(WKT)
另一种常见的方法是将空间数据转换为众所周知的文本(WKT)格式,这是一种用于在地图上表示矢量几何的文本标记语言。WKT 可以在 CSV 的单列中表示点、线、多边形和更复杂的形状。此方法被广泛使用,因为它以许多 GIS 和绘图工具可以解释的格式保存几何图形。
如何做:
(1).使用 QGIS:可使用 QGIS 中的“另存为”功能将 GeoJSON 文件导出为 CSV 并 将几何图形包含为 WKT 字符串。
(2).在导出过程中,可选择 “GEOMETRY=AS_WKT”
以将空间数据包含在 CSV 中。
(3).使用 GDAL 的 ogr2ogr:此命令行工具可以将 GeoJSON 转换为 CSV, 并使用该 -lco GEOMETRY=AS_WKT
选项将几何图形包含为 WKT 字符串。 该命令可能如下所示:
ogr2ogr -f "CSV" output.csv input.geojson -lco GEOMETRY=AS_WKT
(1).将 Python 与 GeoPandas 结合使用:GeoPandas 可以轻松读取 GeoJSON 并导出到 CSV, 包括几何图形。可以 .to_csv()在 GeoDataFrame
上使用该方法, 并首先使用该方法将几何列转换为 WKT .apply(lambda x: x.to_wkt())
。
(2).在 ArcGIS Pro 中:虽然 ArcGIS Pro 不会直接将 GeoJSON 与空间数据导出为 CSV, 但可以首先将 GeoJSON 作为要素图层导入, 然后使用“计算几何属性”工具为 X 和 Y 坐标(对于点)创建新字段, 或生成更复杂几何形状的 WKT。 最后,将属性表导出为CSV。
CSV 文件存储地理空间数据有哪些限制?
CSV(逗号分隔值)文件由于其简单性和与广泛应用程序的兼容性而被广泛用于存储和共享表格数据。然而,在存储地理空间数据时,CSV 文件有几个限制:
缺乏本地地理空间支持
CSV 文件本身并不支持空间数据类型,例如点、线、多边形或复杂几何形状。空间信息必须编码为文本(例如,WKT - 众所周知的文本)或分成纬度和经度列,这可能会过度简化或不足以表示更复杂的几何形状。
没有对空间关系和操作的直接支持
与专门的地理空间格式(例如,GeoJSON、Shapefiles 或 GML)不同,CSV 文件无法直接编码空间关系(例如,邻接、包含)或支持空间操作(例如,相交、缓冲)。任何空间分析都需要额外的处理,通常是在可以解释以文本编码的空间数据的 GIS 软件中。
有限的元数据
CSV 文件缺乏包含有关其所包含数据的元数据的标准方法,例如坐标参考系统 (CRS)、比例、准确性或数据收集方法。此信息对于地理空间数据分析至关重要,在使用 CSV 文件时必须单独管理。
处理多部分几何图形的复杂性
以 CSV 格式表示复杂的几何图形(例如,多部分多边形、多段线)可能很麻烦。虽然可以通过编码为 WKT,但这种方法可能会使数据在没有专门工具的情况下难以读取和处理。
数据完整性和格式问题
CSV 文件容易受到影响数据完整性的格式问题的影响,例如逗号处理不当、字段内换行或行间数据类型不一致。这些问题可能会使编码为文本的空间数据的解析变得复杂。
空间数据编码没有标准化
CSV 文件中的空间数据编码没有普遍接受的标准。不同的应用程序可能使用不同的方法来表示几何形状(例如,WKT、纬度/经度列),从而导致兼容性问题。
效率和可扩展性
由于 CSV 格式的文本性质以及缺乏索引或空间查询功能,大型地理空间数据集的处理和分析效率可能会变得很低。与使用专门为地理空间数据设计的格式相比,这可能会导致性能降低。
减轻限制
虽然 CSV 文件对地理空间数据有限制,但由于其可访问性和简单性,它们仍然是共享数据的流行选择。当出于地理空间目的使用 CSV 文件时,重要的是:
- 清楚地记录用于编码空间数据的任何约定。
- 使用随附的元数据文件来完整描述数据集。
- 考虑转换为或与更适合分析和可视化任务的地理空间格式结合使用。
对于主要涉及具有简单空间组件的表格数据(例如,由纬度和经度表示的位置)的应用程序,CSV 文件仍然是一个实用的选择,只要理解和管理限制即可。
本文内容来源于网站:https://mapscaping.com/geojson-to-csv/,由小编整理编译。