全国村级点位矢量数据如何获取?包含社区且有靠谱来源描述

2024-08-31 09:00   陕西  

在地理信息系统(GIS)领域,获取准确的村级点位数据(包括社区)对于研究和应用非常重要。本文将介绍一种利用国家地名信息库API服务获取全国村级点位矢量数据的方法,并分析这种数据来源的可靠性。


概述

村级点位矢量数据是GIS应用中常用的数据类型,涵盖了全国范围内的村庄、社区等基础地理单元。由于地理数据的获取通常受到法律和数据开放性的限制,找到一个公开且可靠的数据源是关键。就和之前这篇省市县的行政区范围一样→如何获取最权威的行政区划矢量数据

国家地名信息库提供了一个开放的API服务,用户可以通过该服务访问地名相关的公开数据。本文将介绍如何使用该服务获取全国村级点位矢量数据,包括社区点位数据。

国家地名信息库靠谱吗?

数据来源:

国家地名信息库由民政部负责维护和更新,是地名信息的权威来源。其数据库涵盖全国的行政区划、地名、自然地理和人文地理信息,数据全面且及时更新。

数据公开性:

国家地名信息库提供了一个开放的API接口,允许开发者和研究人员访问地名信息。这种开放性使得数据获取更加便捷,同时也符合数据开放的政策。

数据质量:

由于数据来自国家权威机构,其准确性和权威性得到了保证。此外,该库使用了2000国家大地坐标系(CGCS2000),这使得数据在精度上有保障,适用于各种精细化的地理分析。

基于以上几点,可以认为国家地名信息库是一个可信的数据来源,其API接口为获取村级点位数据提供了便捷的途径。

获取的方法

为了获取村级点位矢量数据,包括社区数据,我们可以使用Python编程语言调用国家地名信息库的API。以下是具体的操作步骤:

准备工作:

首先,确保你已经安装了必要的Python库,例如requests和openpyxl,用于发送HTTP请求和处理Excel文件。

pip install openpyxl pandas

API服务功能:

国家地名信息库的API接口提供了多种功能,包括行政区划搜索、地名搜索、地名详情获取等。在这里,我们主要使用“地名搜索”接口来获取村级和社区点位数据。

示例代码:

以下是一个使用Python获取村级点位数据的示例代码:

import requestsimport pandas as pdfrom openpyxl import Workbook, load_workbook
# 地名搜索接口URLurl = "https://dmfw.mca.gov.cn/9095/stname/listPub"
# 初始化请求参数params = { "page": 1, "size": 100, # 每页的记录数(仿佛最大就是100)    "code""610404",  # 行政区划代码可以是2、4、6位,分别对应省、市、县,我建议是一个一个县获取不然会非常非常慢,主要是摸不清这个api的响应机制 "stName": "委员会" # 查询名称包含“委员会”的地名(因为我发现村和社区后缀实际都包含委员会三个字)}
# 初始化Excel文件excel_filename = '地名信息.xlsx'wb = Workbook()ws = wb.activews.title = "地名信息"ws.append(['类型', '名称', '坐标X', '坐标Y']) # 写入标题行wb.save(excel_filename)
while True: # 发送GET请求 response = requests.get(url, params=params)
# 检查响应状态 if response.status_code == 200: try: # 解析JSON数据 result = response.json() records = result['records']
# 如果没有更多记录,则停止循环 if not records: break
# 创建一个临时列表来存储当前页的数据 page_data = []
# 提取地名类型、名称和坐标 for record in records: place_type = record.get('place_type') standard_name = record.get('standard_name') gdm = record.get('gdm')
# 过滤出类型为“社区”或“行政村”的记录 if place_type in ['社区', '行政村']: # 解析GeoJSON坐标 if gdm and 'coordinates' in gdm: coords = gdm['coordinates'] if isinstance(coords[0], list): # 检查是否是多维列表 x, y = coords[0][:2] # 只取第一个点的坐标 else: x, y = coords[:2] else: x, y = None, None
# 添加数据到临时列表 page_data.append([place_type, standard_name, x, y])
# 将当前页的数据追加到Excel文件 if page_data: wb = load_workbook(excel_filename) ws = wb.active for row in page_data: ws.append(row) wb.save(excel_filename)
# 增加页码以请求下一页 params["page"] += 1
except ValueError: print("无法解析响应为JSON格式。响应内容:") print(response.text) break else: print(f"请求失败,状态码:{response.status_code}") print("响应内容:", response.text) break
print("所有数据已成功保存到'地名信息.xlsx'文件中。")

原理与演示

请求数据:代码通过GET请求获取地名信息。

解析数据:处理返回的JSON数据,提取地名类型(如“社区”或“行政村”)和地理坐标。

保存数据:将提取的结果保存到Excel文件中,方便后续使用和分析。

结语

通过使用国家地名信息库的API服务,用户可以方便地获取全国范围内的村级和社区点位矢量数据。国家地名信息库的数据来源权威、开放性好,数据质量高,是一个可靠的数据获取途径。希望本文能帮助到有需要的读者有效获取村级点位数据,为各类地理信息分析和应用提供支持。如果需要写好的py文件可以在后台回复“村级点位”获取!



--THE END--


GIS民工
记录、分享、思考、求知、求是!
 最新文章