从OSM中提取矢量和光栅数据。

osmxtract的Python项目详细描述


OSMXtract

说明

osmxtract是一个简单的python包,它使用Overpass API来获取OpenStreetMap特性并将它们导出到geojson文件中。

安装

使用pip

pip install osmxtract

命令行界面

使用量

osmxtract可以根据三个不同的选项猜测查询的范围:

  • --fromfile:使用输入矢量或光栅文件的边界;
  • --latlon--buffer:使用给定点周围缓冲区的边界;
  • --address--buffer:使用地理编码地址周围的缓冲区边界。
Usage: osmxtract [OPTIONS] OUTPUT

  Extract GeoJSON features from OSM with the Overpass API.

Options:
  --fromfile PATH                 Bounding box from input file.
  --latlon FLOAT...               Space-separated lat/lon coordinates.
  --address TEXT                  Address to geocode.
  --buffer INTEGER                Buffer size in meters around lat/lon or
                                  address.
  --tag TEXT                      OSM tag of interest (ex: "highway").
  --values TEXT                   Comma-separated list of possible values (ex:
                                  "tertiary,primary").
  --case-insensitive              Make the first character of each value case
                                  insensitive.
  --geom [point|linestring|polygon|multipolygon]
                                  Output geometry type.
  --help                          Show this message and exit.

示例

# buildings around the "Université Libre de Bruxelles" as polygons# save features in the file `buildings.geojson`. since no values# are provided, all non-null values are accepted for the tag# "highway" are accepted.
osmxtract --address "Université Libre de Bruxelles" --buffer 5000\
          --tag building --geom polygon buildings.geojson

# primary, secondary and tertiary roads based on the extent# of an existing raster. save the result as linestrings in the# `major_roads.geojson` file. we use the `--case-insensitive`# flag to get roads tagged as "primary" as well as "Primary".
osmxtract --fromfile map.tif --tag highway \
          --values "primary,secondary,tertiary"\
          --case-insensitive --geom linestring \
          major_roads.geojson

# cafes and bars near "Atomium, Brussels" 
osmxtract --address "atomium, brussels" --buffer 1000\
          --tag amenity --values "cafe,bar" --geom point \
          cafes_and_bars.geojson

API

importjsonfromosmxtractimportoverpass,locationimportgeopandasasgpd# Get bounding box coordinates from a 2km buffer# around the Atomium in Brusselslat,lon=location.geocode('Atomium, Brussels')bounds=location.from_buffer(lat,lon,buffer_size=2000)# Build an overpass QL query and get the JSON responsequery=overpass.ql_query(bounds,tag='amenity',values=['cafe','bar'])response=overpass.request(query)# Process response manually...foreleminresponse['elements']:print(elem['tags'].get('name'))# Output:# Au Bon Coin# Aux 4 Coins du Monde# Excelsior# Welcome II# Heymbos# Games Café# Stadium# Le Beau Rivage# The Corner# None# Expo# Koning# Centrum# St. Amands# Bij Manu# ...or parse them as GeoJSONfeature_collection=overpass.as_geojson(response,'point')# Write as GeoJSONwithopen('cafes_and_bars.geojson','w')asf:json.dump(feature_collection,f)# To GeoPandas GeoDataFrame:geodataframe=gpd.GeoDataFrame.from_features(feature_collection)

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java Spring数据elasticsearch@Query嵌套对象注释   java JAXB解组器正在跳过具有其他命名空间的元素   java Web视图文件选择器崩溃问题   macos通过java创建的应用程序访问MacOSX上的麦克风,并打包到。dmg   在子文件夹上使用java设置ACL的文件权限失败(缺少继承)   java Force在AlertDialog中显示软键盘   java如何保存上传的文件   java如何从jpeg文件中的FFC4(DHT)头创建哈夫曼树?   关于高性能流数据处理的java问题   SpringMVC项目中Tiles页面的java集标题   从Java到Webview Javascript的Android回调函数   java无法从循环打印“FlimFlam”   OpenJDK安装时没有java命令