overpass-api - 提取一个国家的所有多边形状态
问题描述
我需要我的国家的多边形。
经过多次尝试,我得到了这个。它确实返回了我的国家的状态,但没有路径和许多我不想要的项目。
我一直在使用http://overpass-turbo.eu/来测试我的查询。
[out:json][timeout:25];
{{geocodeArea:Czechia}}->.searchArea;
(
relation["boundary"="administrative"]["admin_level"="7"](area.searchArea);
);
// print results
out body;
>;
out skel qt;
我想知道:
- 我需要做些什么来获得结果的多边形(在我的例子中是状态)
- 为什么我在指定边界和 admin_level 时会得到道路和其他东西。
- 下次如何进行类似的查询(对于斯洛伐克,我至少会得到相同的查询)
解决方案
要获取多边形,您可以将查询的 json 结果转换为 GeoJSON。
您可以在http://overpass-turbo.eu/中通过运行查询然后单击导出按钮并选择GeoJSON格式对其进行测试。
输出将包含州和行政中心作为features
数组的项目。每个项目将包含其多边形坐标geometry.coordinates
。
我不知道如何通过查询过滤掉管理中心,但是您可以在处理 GeoJSON 时在客户端轻松过滤掉这些项目。除此之外,我没有看到任何其他不需要的数据。
示例输出(为便于阅读而缩写):
{
...
"features": [
{
"type": "Feature",
"properties": {
"@id": "relation/435509",
"ISO3166-2": "CZ-806",
"admin_level": "7",
"boundary": "administrative",
"name": "okres Ostrava-město",
...
},
"geometry": {
"type": "Polygon",
"coordinates": [
[
[
18.3400673,
49.7592689
],
[
18.3403166,
49.7590688
],
[
18.3406238,
49.7586477
],
...
关于类似的查询 - 它取决于可用的数据并且是特定于国家/地区的。
例如,对于斯洛伐克,admin_level
返回覆盖整个州的区域的最低值是4
,并且该设置仅返回区域(这是比您用于捷克共和国的级别更高的分区)。
推荐阅读
- angular - 选项卡之间的firebase身份验证持久性问题
- audio - 如何将 Praat 脚本应用于音频文件?
- windows - 在计划任务中运行 msys2 bash 作业时如何继承 WIndows 系统环境变量
- java - 当我试图在我的设备上测试游戏时,“不幸的是,应用名称已停止
- java - 使用android studio的fire base中的身份验证问题
- spring - 本机 SQL 选择强制在事务方法中刷新
- python-3.x - 速记 If Else 语句的结构分解
- javascript - 什么时候应该使用 JSDocs?
- python-3.x - 如何使用kivy一次运行两个进程
- sql - SQL Server 2017 - 根据订单号连接值