Skip to main content

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

Project description

CI Status PyPI version

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', precision=2)

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
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.

Source Distribution

zmapio-0.8.1.tar.gz (9.5 kB view details)

Uploaded Source

Built Distribution

zmapio-0.8.1-py3-none-any.whl (7.7 kB view details)

Uploaded Python 3

File details

Details for the file zmapio-0.8.1.tar.gz.

File metadata

  • Download URL: zmapio-0.8.1.tar.gz
  • Upload date:
  • Size: 9.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.8.0 pkginfo/1.8.2 readme-renderer/34.0 requests/2.27.1 requests-toolbelt/0.9.1 urllib3/1.26.8 tqdm/4.63.1 importlib-metadata/4.11.3 keyring/23.5.0 rfc3986/2.0.0 colorama/0.4.4 CPython/3.9.13

File hashes

Hashes for zmapio-0.8.1.tar.gz
Algorithm Hash digest
SHA256 5e760761757830343b7d4bf53beb17478e23ae3f42c92dd6f745fe43756b1bca
MD5 45b114644579bc138df925de399753fc
BLAKE2b-256 122bd6d63141a96210f0d6c88379f4ffa64dfa505b20629e17f8d8893781d9b5

See more details on using hashes here.

File details

Details for the file zmapio-0.8.1-py3-none-any.whl.

File metadata

  • Download URL: zmapio-0.8.1-py3-none-any.whl
  • Upload date:
  • Size: 7.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.8.0 pkginfo/1.8.2 readme-renderer/34.0 requests/2.27.1 requests-toolbelt/0.9.1 urllib3/1.26.8 tqdm/4.63.1 importlib-metadata/4.11.3 keyring/23.5.0 rfc3986/2.0.0 colorama/0.4.4 CPython/3.9.13

File hashes

Hashes for zmapio-0.8.1-py3-none-any.whl
Algorithm Hash digest
SHA256 b539a50749be06891753f52389ccd605eff5de470ffa0bc877cb6148f87d51c5
MD5 3773f3130393fb6e56a2ce9ca57e397c
BLAKE2b-256 6b38d606ecc55068b5fd85a28643f7291a860db5de7a77ec7927f5577b24e18c

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page