用于使用 ZMAP Plus ASCII Grid 格式读取和写入地图网格数据的 Python 库
项目描述
安装:
$ pip install zmapio
zmapio的基本用法
import matplotlib.pyplot as plt
import numpy as np
from zmapio import ZMAPGrid
%matplotlib inline
读取 ZMAP 文件:
z_file = ZMAPGrid('./examples/NSLCU.dat')
访问评论标题:
for c in z_file.comments:
print(c)
Landmark Zmap grid file name: .DATANSLCU.dat Created/converted by Oasis Montaj, Geosoft Inc.
绘制网格数据:
z_file.plot()
行和列的计数:
z_file.no_cols, z_file.no_rows
(435, 208)
z 值的形状:
z_file.z_values.shape
(208, 435)
导出为 CSV 文件:
z_file.to_csv('./output/output.csv')
head ./output/output.csv
-630000.0,2621000.0,-16481.9570313 -630000.0,2618000.0,-16283.9033203 -630000.0,2615000.0,-16081.5751953 -630000.0,2612000.0,-15856.7861328 -630000.0,2609000.0,-15583.7167969 -630000.0,2606000.0,-15255.734375 -630000.0,2603000.0,-14869.3769531 -630000.0,2600000.0,-14426.1513672 -630000.0,2597000.0,-13915.8769531 -630000.0,2594000.0,-13340.4677734
导出到 WKT 文件:
z_file.to_wkt('./output/output.wkt', precision=2)
导出到 GeoJSON 文件:
z_file.to_geojson('./output/output.json')
导出到 Pandas 数据框:
df = z_file.to_dataframe()
df.Z.describe()
count 90480.000000 mean -5244.434235 std 4692.845490 min -16691.371094 25% -10250.590088 50% -4003.433105 75% -1320.896881 max 2084.417969 Name: Z, dtype: float64
以每行 3 个节点的格式编写一个新的 ZMAP 文件:
z_file.write('./output/test.zmap', nodes_per_line=3)
head ./output/test.zmap
! Landmark Zmap grid file name: .DATANSLCU.dat ! Created/converted by Oasis Montaj, Geosoft Inc. @.DATANSLCU.dat, GRID, 3 20, 1e+30, , 7, 1 208, 435, -630000.0, 672000.0, 2000000.0, 2621000.0 0.0, 0.0, 0.0 @ -16481.9570313 -16283.9033203 -16081.5751953 -15856.7861328 -15583.7167969 -15255.7343750 -14869.3769531 -14426.1513672 -13915.8769531
从字符串创建 ZMAP 对象:
z_text = """
!
! File created by DMBTools2.GridFileFormats.ZmapPlusFile
!
@GRID FILE, GRID, 4
20, -9999.0000000, , 7, 1
6, 4, 0, 200, 0, 300
0.0, 0.0, 0.0
@
-9999.0000000 -9999.0000000 3.0000000 32.0000000
88.0000000 13.0000000
-9999.0000000 20.0000000 8.0000000 42.0000000
75.0000000 5.0000000
5.0000000 100.0000000 35.0000000 50.0000000
27.0000000 1.0000000
2.0000000 36.0000000 10.0000000 6.0000000
9.0000000 -9999.0000000
"""
z_t = ZMAPGrid(z_text)
z_t.plot()
使用 matplotlib 添加颜色条和颜色图:
z_obj = ZMAPGrid('./examples/NStopo.dat')
fig=plt.figure(figsize=(12, 6))
z_obj.plot(cmap='jet')
plt.colorbar()
从具有形状 (no_cols, no_rows) 的 2D-Numpy 数组创建一个新的 ZMAP 对象:
z_val = z_obj.z_values
print('Z-values shape: ', z_val.shape)
new_zgrid = ZMAPGrid(z_values=z_val, min_x=-630000.0000, max_x=672000.0000,
min_y=2000000.0000, max_y=2621000.0000)
Z-values shape: (435, 208)
new_zgrid.plot(cmap='gist_earth')
自定义编写 ZMAP 文件:
new_zgrid.comments = ['this is', 'a test']
new_zgrid.nodes_per_line = 4
new_zgrid.field_width = 15
new_zgrid.decimal_places = 3
new_zgrid.name = 'test'
new_zgrid.write('./output/new_z.dat')
head ./output/new_z.dat
!this is !a test @test, GRID, 4 15, 1e+30, , 3, 1 208, 435, -630000.0, 672000.0, 2000000.0, 2621000.0 0.0, 0.0, 0.0 @ -67.214 -67.570 -67.147 -69.081 -73.181 -74.308 -72.766 -72.034 -70.514 -68.555 -66.195 -62.776
参考
https://lists.osgeo.org/pipermail/gdal-dev/2011-June/029173.html
Saltus, RW 和 Bird, KJ, 2003。阿拉斯加北坡和邻近北极地区的数字深度地平线汇编。美国地质调查局数据发布:https ://doi.org/10.3133/ofr03230
项目详情
下载文件
下载适用于您平台的文件。如果您不确定要选择哪个,请了解有关安装包的更多信息。
源分布
zmapio-0.8.1.tar.gz
(9.5 kB
查看哈希)
内置分布
zmapio-0.8.1-py3-none-any.whl
(7.7 kB
查看哈希)