下载、读取/解析和导入/导出openstreetmap数据摘要
pydriosm的Python项目详细描述
Pydriosm
该软件包为研究人员提供了有用的实用工具,使他们能够轻松下载和读取/分析OpenStreetMap数据摘要(在.pbf和.shp.zip中),这些数据摘要可从免费下载服务器获得:geofabrik和bbbike。此外,它还提供了一种方便的方式,将解析后的数据导入/转储到并从apostgresql服务器检索。
内容
Windows操作系统用户可以在命令提示符下使用"pip install"命令: 如果您正在使用一些ide,比如pycharm,那么您应该能够在pypi存储库中找到pydriosm。(在pycharm中,转到"设置"并在"项目解释器"中找到pydriosm;要安装它,请选择pydriosm,然后单击"安装包"。) 首先,我们导入包: 当前版本的包只处理免费服务器上提供的子区域数据文件。要获取可用的子面域名称的完整列表,可以使用 下面是一个使用"大伦敦"地区的.pbf数据来简要演示此软件包可以执行的一些主要功能的示例。 要下载数据提取可用的区域(或更确切地说,子区域)的OSM数据,需要指定区域的名称(例如"大伦敦"): 下载"大伦敦"的数据:
注意,默认情况下 检查默认文件路径和名称: 但是,您也可以将 .pbf数据文件将按指定保存到 解析.pbf数据主要依赖于gdal/ogr,使用 如果数据文件太大,解析过程可能需要几分钟甚至更长的时间。如果文件大小大于给定的 请注意,大伦敦是一个dict,其键是五个不同层的名称:"点"、"线"、"多行"、"多多边形"和"其他关系"。 如果只指定了子区域的名称,即 为了让生活更轻松,您可以跳过下载步骤,直接使用 设置pickle-it=true是将解析数据的本地副本保存为pickle-file。如果 相比之下,您可以使用 请注意,大伦敦和大伦敦是不同的。 若要获取有关多个子面域的信息,还可以合并这些子面域中特定图层的.shp文件。例如,要合并"大伦敦"和"埃塞克斯"两个分区域的"铁路"层,我们可以执行以下操作。 您还可以设置 pydriosm还提供了一个名为"osm"的类,它与postgresql服务器通信。 要建立与服务器的连接,系统会要求您输入用户名、密码、主机名/地址和要连接的数据库的名称。 例如,您可以键入"postgres"来连接默认数据库。(请注意,键入名称时应去掉引号。) 如果要连接到另一个数据库(而不是默认的"postgres"),请运行 然后,如果在建立连接之前不存在名为"osm_pbf_data撸u extracts"的数据库,则会自动创建该数据库。 要将"大伦敦"的 要检索转储的数据: 注意 如果需要查询特定层(或多个层)的数据,或按特定的层(模式)顺序查询数据: 设置 如果要导入"大不列颠"的所有分区域数据:
不是返回 数据/地图数据
所有来自OpenStreetMap的数据都在OpenStreetMap许可证下获得许可。
安装
pip install --upgrade pydriosm
注意:
pydriosm
(并确保其全部功能)需要一些依赖项。在窗口上但是,s os,pip install
可能无法完成一些支持包的安装,例如python levenshtein,fiona,gdal和shapely。在这种情况下,您可能需要安装它们的.whl文件,这些文件可以从用于python扩展包的非正式windows二进制文件中下载。一旦这些包都准备好了,我们就可以继续执行pip
命令。快速启动
importpydriosmasdri
subregion_list=dri.fetch_subregion_info_catalogue("GeoFabrik-subregion-name-list")print(subregion_list)
下载数据
subregion_name='Greater London'# or, subregion_name = 'london'; case-insensitive and fuzzy (but not toooo... fuzzy)
dri.download_subregion_osm_file(subregion_name,osm_file_format=".osm.pbf",download_dir=None,update=False,download_confirmation_required=True)
download_dir
为none
。在这种情况下,将创建一个默认文件路径,并将下载的文件保存在那里。default_fn,default_fp=dri.get_default_path_to_osm_file(subregion_name,osm_file_format=".osm.pbf",mkdir=False,update=False)print("Default filename: {}".format(default_fn))print("Default file path: {}".format(default_fp))
download_dir
设置为任何其他有效目录,特别是在下载多个子区域的数据时。例如,# Specify the our own data directorycustomised_data_dir="test_data"# So "test_data" folder will be created in our current working directory# Alternatively, we could specify a full path # import os# customised_data_dir = os.path.join(os.getcwd(), "test_data")# Download .pbf data of both 'London' and 'Kent' to the `customised_data_dir`dri.download_subregion_osm_file('London','Kent',osm_file_format=".osm.pbf",update=False,download_dir=customised_data_dir,download_confirmation_required=True)
下载目录中。
读取/分析数据
read\u osm\u pbf()
函数。greater_london=dri.read_osm_pbf(subregion_name,data_dir=None,parsed=True,file_size_limit=50,fmt_other_tags=True,fmt_single_geom=True,fmt_multi_geom=True,update=False,download_confirmation_required=True,pickle_it=True,rm_raw_file=False)
文件大小限制
(默认值:50 MB),则将以分块方式分析数据。read_osm_pbf(subsystem_name,…)
,则函数将从默认文件路径查找数据文件。否则,函数需要特定的数据目录。例如,要读取/分析"自定义数据目录"中的数据,即"测试数据"文件夹,您需要设置如下:greater_london_test=dri.read_osm_pbf(subregion_name,data_dir=customised_data_dir)
大伦敦
和大伦敦
测试应该相同。read_osm_pbf()
。也就是说,如果目标数据不可用,read_osm_pbf()
将首先下载数据文件。默认情况下,如果download_confirmation_required=true
update=false
,当您再次运行read_osm_pbf(subsystem_name)
时,函数将直接加载pickle
文件。如果update=true
,函数将尝试下载最新版本的数据文件并再次对其进行分析。read_shp_zip()
,它主要依赖于geopandas,读取.shp.zip数据文件:
0
pip install --upgrade pydriosm
1
pip install --upgrade pydriosm
data dir=customized\u data dir
以保存下载的.shp.zip文件;或设置output\u dir=customized\u data dir
以使合并的.shp文件可用于customized\u data dir
使用PostgreSQL服务器导入和检索数据
2
pip install --upgrade pydriosm
3
pip install --upgrade pydriosm
(1)将数据导入数据库
大伦敦
(即已解析的.pbf数据)导入数据库,"OSM>大伦敦数据提取":
4
pip install --upgrade pydriosm
greater_london
数据的每个元素(即层)将存储在不同的模式中。架构被命名为每个层的名称。(2)从数据库检索数据
5
pip install --upgrade pydriosm
greater_london_retrieval
可能与greater_london
不完全相同。这是因为greater-london
中元素的键按以下顺序排列:"points"、"lines"、"multilinestrings"、"multipolygons"和"other-relations";而当将greater-london
转储到数据库时,五个不同的模式按字母顺序排序为如下:"行"、"多行"、"多多边形"、"其他关系"和"点",因此从服务器检索数据将按后一顺序进行。尽管如此,大伦敦和大伦敦检索中包含的数据是一致的。
6
pip install --upgrade pydriosm
(3)将给定(子)区域的所有子区域的数据导入数据库
7
pip install --upgrade pydriosm
rm_raw_file=false
和data_dir=none
会将所有原始.pbf数据文件保留在默认数据文件夹中。
8
pip install --upgrade pydriosm
['England'、'Scotland'、'Wales']
,而是包含"England"(而不是"England"作为单个元素)、"Scotland"和"Wales"的所有子区域。
推荐PyPI第三方库