Skip to main content

Python library for reading and writing map gridded data using ZMAP Plus ASCII Grid format

Project description

To install:

$ pip install zmapio

Basic usage of zmapio

import matplotlib.pyplot as plt
import numpy as np
from zmapio import ZMAPGrid
%matplotlib inline

Reading a ZMAP file:

z_file = ZMAPGrid('./examples/NSLCU.dat')

Accessing the comments header:

for c in z_file.comments:
    print(c)
Landmark Zmap grid file name:   .DATANSLCU.dat
Created/converted by Oasis Montaj, Geosoft Inc.

Plotting the grid data:

z_file.plot()
https://raw.githubusercontent.com/abduhbm/zmapio/master/_static/output_9_1.png

Counts for rows and columns:

z_file.no_cols, z_file.no_rows
(435, 208)

Shape for z-values:

z_file.z_values.shape
(208, 435)

Exporting to CSV file:

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

Exporting to WKT file:

z_file.to_wkt('./output/output.wkt')

Exporting to GeoJSON file:

z_file.to_geojson('./output/output.json')

Exporting to Pandas Dataframe:

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

Write a new ZMAP file as 3 nodes per line format:

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

Creating a ZMAP object from string:

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()
https://raw.githubusercontent.com/abduhbm/zmapio/master/_static/output_28_1.png

Adding colorbar and colormap using matplotlib:

z_obj = ZMAPGrid('./examples/NStopo.dat')
fig=plt.figure(figsize=(12, 6))
z_obj.plot(cmap='jet')
plt.colorbar()
https://raw.githubusercontent.com/abduhbm/zmapio/master/_static/output_30_1.png

Creating a new ZMAP object from 2D-Numpy array with shape (no_cols, no_rows):

z_val = z_obj.z_values.swapaxes(0, 1)
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')
https://raw.githubusercontent.com/abduhbm/zmapio/master/_static/output_33_1.png

Customize writing a ZMAP file:

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

References

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Files for zmapio, version 0.3
Filename, size File type Python version Upload date Hashes
Filename, size zmapio-0.3-py2.py3-none-any.whl (7.2 kB) File type Wheel Python version py2.py3 Upload date Hashes View hashes
Filename, size zmapio-0.3.tar.gz (7.2 kB) File type Source Python version None Upload date Hashes View hashes

Supported by

Elastic Elastic Search Pingdom Pingdom Monitoring Google Google BigQuery Sentry Sentry Error logging AWS AWS Cloud computing DataDog DataDog Monitoring Fastly Fastly CDN DigiCert DigiCert EV certificate StatusPage StatusPage Status page