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测试访问令牌过滤器   close()上的java Apache POI运行时异常   java为什么Eclipse中的GWT总是显示错误404?   java从socket python服务器接收消息   java mediaRecorder:start()函数失败   不关闭DB连接可能是Tomcat上Java堆溢出的原因吗?   java JFrame无法关闭   java BigQuery加载本地文件不起作用,位置有问题   java可以在递归任务中使用吗?   servlets如何从JSESSIONID加载Java HttpSession?   java将JFileChooser与PDFBox一起使用时,文件不会另存为pdf,但保存时不带扩展名   java将处理结果存储在表中   java算法发现循环世界中重叠间隔的持续时间(24小时)   在windows 10上双击Eclipse安装程序可执行文件(eclipseinstjrewin64.exe)后,java不会发生任何事情   java编译和部署自定义Solr请求处理程序   Java/Android崩溃ApacheCommonsio2。4.jar   spring web应用程序中的java集成收件箱功能   java Grizzly、Jersey和Spring自动布线问题   java如何在pom中添加jar文件依赖项。xml   关于Android中大量GUI更新编码的java概念(GUI处理程序)