下载全球耕地数据集(柬埔寨和越南地区),遇到的坑及解决办法
下载全球耕地数据集(柬埔寨和越南地区),遇到的坑及解决办法
ytkz全球耕地数据集地址:
List of datasets
Title | License | Provider |
---|---|---|
Austria | CC-BY-4.0 | Agrarmarkt Austria |
BRP Crop Field Boundaries for The Netherlands (CAP-based) | CC0-1.0 | |
Denmark Crop Fields (Marker) | CC-0 | |
Field boundaries for Belgium Wallonia | No conditions apply to access and use | |
Field boundaries for Cambodia and Vietnam (AI4SmallFarms) | CC-BY-4.0 | |
Field boundaries for Catalonia, Spain | Open Information Use License - Catalonia | |
Field boundaries for Croatia | Publicly available data | |
Field boundaries for Czech | CC-0 | |
Field boundaries for Estonia | CC-BY-SA-3.0 | Põllumajanduse Registrite ja Informatsiooni Amet |
Field boundaries for Flanders, Belgium | Licentie modellicentie-gratis-hergebruik/v1.0 | |
Field boundaries for France from Eurocrops (2018) | CC-BY-SA-4.0 | Institut National de l’Information Géographique et Forestière |
Field boundaries for Latvia from EuroCrops (2021) | CC-BY-4.0 | Lauku atbalsta dienests |
Field boundaries for Luxembourg | CC-BY-4.0 | Luxembourg ministry of Agriculture |
Field boundaries for Mecklenburg-Western Pomerania, Germany | No restrictions apply | |
Field boundaries for Portugal | No conditions apply | |
Field boundaries for Saarland, Germany | cc-by-4.0 | © GDI-SL 2024 |
Field boundaries for Saxony, Germany | dl-de/by-2-0 | Sächsisches Landesamt für Umwelt, Landwirtschaft und Geologie |
Field boundaries for Slovakia | Publicly available data | |
Field boundaries for Slovenia | Publicly available data | |
Field boundaries for Slovenia from EuroCrops (2021) | CC-BY-SA-4.0 | Ministrstvo za kmetijstvo, gozdarstvo in prehrano |
Field boundaries for Sweden | CC0-1.0 | Jordbruksverket |
Field boundaries for Switzerland | Open BY | |
Field boundaries for The Netherlands | CC0-1.0 | |
Field boundaries for ireland | CC-BY-4.0 | Ireland Department of Agriculture, Food and the Marine |
Field boundaries for the west of Bahia state, Brazil | CC-BY-4.0 | |
Fields of the World | various | |
Finnish Crop Fields (Maatalousmaa) | CC-BY-4.0 | Finnish Food Authority |
Germany, Berlin / Brandenburg | dl-de/by-2-0 | Land Brandenburg |
Germany, Lower Saxony | dl-de/by-2-0 | Land Niedersachsen |
Germany, North Rhine-Westphalia | dl-de/by-2-0 | Land Nordrhein-Westfalen / Open.NRW |
Germany, Schleswig-Holstein | dl-de/zero-2-0 | Land Schleswig-Holstein |
Germany, Thuringia | dl-de/by-2-0 | Thüringer Landesamt für Landwirtschaft und Ländlichen Raum |
Lacuna labels | Participant license agreement for the NICFI contract | |
UKFields | CC-BY-4.0 | Bancroft S, Wilkins J |
我下载柬埔寨和越南的田地边界的数据,作为示例。
柬埔寨和越南的田地边界(AI4SmallFarms)
页面是英文,我选择机翻,快速办事,看下大概意思。
该大型数据集包含 439,001 个农田多边形,分为 62 个区块,每个区块约 5×5 公里,分布在越南和柬埔寨,涵盖了各种农田和多种景观类型。农田多边形是根据卫星图像精心数字化的,经过严格的多步骤质量控制流程和拓扑一致性检查。
格式是geoParquet。这种数据格式,我是第一次看到。
Parquet是什么
那就去查一查Parquet是什么,还有关键是怎么把它转换为json或者shp。
遇到的坑
Parquet是一种高效的列式存储格式,而JSON是一种常见的数据交换格式。
我们可以使用 pandas读取Parquet数据集。
这里是失败经验,我是一边做一边记录、摸索。这个过程,可以参考下。
具体步骤如下。
安装库:
pip install pandas pyarrow
数据转换步骤:
import pyarrow.parquet as pq
import geopandas as gpd
# 读取Parquet文件
table = pq.read_table('ai4sf.parquet')
# 将Parquet数据转换为DataFrame
df = table.to_pandas()
df是一个43万行 ,7列的表,如下:
其中 geometry
列中的数据是二进制格式。(以 b'\x01\x03\x00\x00\x00\x01\x00\x00\x00\n\x00\...'
形式表示)。这种二进制数据在转换为JSON时可能会引起编码问题,因为JSON要求所有字符串都是有效的UTF-8编码。
所以 我们要用 geopandas进行 数据转换
代码如下 :
import pyarrow.parquet as pq
import geopandas as gpd
# 读取Parquet文件
table = pq.read_table('ai4sf.parquet')
df = table.to_pandas()
df = df.drop(columns=['determination_datetime'])
# 将 DataFrame 转换为 GeoDataFrame
gdf = gpd.GeoDataFrame(df, geometry=gpd.GeoSeries.from_wkb(df['geometry']))
# 设置原始 CRS
gdf.set_crs(epsg=4326, inplace=True)
# 转换 CRS
gdf = gdf.to_crs(epsg=4326) # 如果需要转换到其他 CRS,可以更改 epsg 值
geojson_data = gdf.to_json()
# 将 GeoJSON 数据保存到文件
with open('output1.geojson', 'w') as f:
f.write(geojson_data)
print("GeoJSON 文件已保存为 output.geojson")
结果
parquet源文件大小:
转换后的 Geojson文件大小:
结果发现 ,使用geopandas对parquet文件进行格式转换是行不通 ,坐标信息错乱了。
成功经验
经过 ,一番探索,发现有个库可以对parquet进行 格式转换,
地址是:https://pypi.org/project/fiboa-cli/
安装:
pip install fiboa-cli
格式转换语句,在命令行运行。
fiboa create-geojson ai4sf.parquet -o d://
程序运行了3分钟,成功生成了geojson格式 。
可视化方法1:
把它拖拽到QGIS可视化,如下:
比例尺再放大 100倍。如下:
可视化方法2:
之前做了 一个在线网站查看geojson的demo。
https://ytkz.tech/openlayer_test/
可视化结果 如下,:
因为文件太大了,所以很卡。蓝色范围的就是耕地边界。
但是,转换后的json文件,高达294兆。
要知道,parquet源文件才20多兆,文件大小膨胀了10倍!这下我知道了parquet的优点了!
参考