geoformat是一个gdal/ogr库覆盖层

geoformat的Python项目详细描述


欢迎使用GeoFormat

简介

GeoFormat是具有MIT许可证的GDAL/OGR覆盖层。 库的目标是简化加载和ogr的“数据源”和“层”操作。 到目前为止,这个库处于alpha模式。这意味着目前这个图书馆的结构 完全面向对象兼容。

安装

$ pip install geoformat

基本操作

地理格式结构

Strucutre of Geoformat

打开地理容器

容器相当于包含一个或多个地理层的文件夹或数据库。

importgeoformatcommune_path='data/FRANCE_IGN/COMMUNE_2016_MPO_L93.shp'gare_path='data/FRANCE_IGN/GARES_PT_L93.shp'layer_list=[commune_path,gare_path]geocontainer=geoformat.ogr_layers_to_geocontainer(layer_list)print(geocontainer['layers'].keys())# >>>dict_keys(['COMMUNE_2016_MPO_L93', 'GARES_PT_L93'])

打开地质层

地理图层相当于数据库中包含一个或多个具有属性和/或特性的文件或表。 几何学。

importgeoformatdepartement_path='data/FRANCE_IGN/DEPARTEMENT_2016_L93.shp'geolayer=geoformat.ogr_layer_to_geolayer(departement_path)print(len(geolayer['features']))# >>>96

打印数据地理层

有时打印终端地理层的属性是有用的。

importgeoformatregion_path='data/FRANCE_IGN/REGION_2016_L93.shp'geolayer=geoformat.ogr_layer_to_geolayer(region_path)forlineingeoformat.print_features_data_table(geolayer):print(line)### >>>+--------+----------+-------------------------------------+------------+------------+|i_feat|CODE_REG|NOM_REG|POPULATION|SUPERFICIE|+========+==========+=====================================+============+============+|0|76|LANGUEDOC-ROUSSILLON-MIDI-PYRENEES|5683878|7243041||1|75|AQUITAINE-LIMOUSIN-POITOU-CHARENTES|5844177|8466821||2|84|AUVERGNE-RHONE-ALPES|7757595|7014795||3|32|NORD-PAS-DE-CALAIS-PICARDIE|5987883|3187435||4|44|ALSACE-CHAMPAGNE-ARDENNE-LORRAINE|5552388|5732928||5|93|PROVENCE-ALPES-COTED'AZUR          | 4953675    | 3155736    ||6|27|BOURGOGNE-FRANCHE-COMTE|2819783|4746283||7|52|PAYSDELALOIRE|3660852|2997777||8|28|NORMANDIE|3328364|2728511||9|11|ILE-DE-FRANCE|11959807|1205191||10|24|CENTRE-VALDELOIRE|2570548|3905914||11|53|BRETAGNE|3258707|2702269||12|94|CORSE|320208|875982|+--------+----------+-------------------------------------+------------+------------+

更改地层坐标参考系[CRS]

它可以用来更改层的投影。在本例中,我们将把投影lambert93中的一个地理层[epsg:2154]转换为坐标系wgs84[epsg:4326]。

importgeoformatregion_path='data/FRANCE_IGN/REGION_2016_L93.shp'geolayer=geoformat.ogr_layer_to_geolayer(region_path)geolayer=geoformat.reproject_geolayer(geolayer,out_crs=4326)print(geolayer['metadata']['geometry_ref']['crs'])# >>>4326

在与ogr兼容的gis文件中写入geolayer

显然,您可以将地理层转换为兼容的ogr文件格式。 在本例中,您以“esri shapefile”格式放置了一个地理层,然后我们以“geojson”格式创建了一个新文件(我们添加了一个重新投影,因为geojson应该在wgs84坐标系中)。

importgeoformatgares_shp_path='data/FRANCE_IGN/GARES_L93.shp'gares_geojson_path='data/FRANCE_IGN/GARES_L93.geojson'geolayer=geoformat.ogr_layer_to_geolayer(gares_shp_path)geolayer=geoformat.reproject_geolayer(geolayer,out_crs=4326)geoformat.geolayer_to_ogr_layer(geolayer,gares_geojson_path,'GEOJSON')

在ogr兼容的数据源中编写容器

像geolayer一样,您可以在文件夹或与grg兼容的数据源中编写geoformat容器。 这里我们有一个带有很多层的geocontainer,我们希望将所有这些保存在另一个文件夹中(但它也可以是一个“postgresql”数据库)。

importgeoformat# INPUTcommune_path='data/FRANCE_IGN/COMMUNE_2016_MPO_L93.shp'gare_path='data/FRANCE_IGN/GARES_PT_L93.shp'# OUTPUToutput_folder='data/'layer_list=[commune_path,gare_path]geocontainer=geoformat.ogr_layers_to_geocontainer(layer_list)geoformat.geocontainer_to_ogr_format(geocontainer,output_folder,'kml')

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

推荐PyPI第三方库


热门话题
在java代码中实现两个侦听器时发生swing错误   Lambda是否完全取消了Java8中匿名内部类的使用?   swing OpenSuse 12.3+Java双显示   POM中的java错误。xml文件,即使在清理{users}/之后。m2/用于*上次更新文件的存储库   JavaEDT特定的方法和其他东西   java如何使用GridLayout设置组件大小?有更好的办法吗?   java在itext7中生成二维码时,如何调整点的大小?   java如何在多行上显示文本并右对齐?   java在WebSphereCluString环境中分离Log4j日志   JAVA从文件读取,返回BigInteger值   当使用rxjava2进行排列时,使用javamockito。重试()   在java fasterxml中创建Xml   使用64位整数进行模运算的64位整数的java快速乘法,无溢出   java静态变量保留以前发布的值   datastax enterprise SSTable loader流式处理无法提供java。木卫一。IOException:对等方重置连接   java匹配的通配符是严格的,但找不到元素“mvc:annotationdriven”的声明。标准包装。可抛出   java无法在浏览器上下载文件文档?