From a4766f50eee124c8c6db6a7dddebca7408e51d2e Mon Sep 17 00:00:00 2001 From: Mike Taves Date: Thu, 1 Aug 2019 09:23:54 +1200 Subject: [PATCH 1/2] fix(reference): fix UnboundLocalError error, deprecate crs class --- flopy/utils/reference.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/flopy/utils/reference.py b/flopy/utils/reference.py index 3fc657c7ed..50cd8251d7 100755 --- a/flopy/utils/reference.py +++ b/flopy/utils/reference.py @@ -1933,6 +1933,9 @@ class crs(object): """ def __init__(self, prj=None, esri_wkt=None, epsg=None): + warnings.warn( + "crs has been deprecated. Use CRS in shapefile_utils instead.", + category=DeprecationWarning) self.wktstr = None if prj is not None: with open(prj) as fprj: @@ -1973,6 +1976,7 @@ def crs(self): proj = 'longlat' # datum + datum = None if 'NAD' in self.datum.lower() or \ 'north' in self.datum.lower() and \ 'america' in self.datum.lower(): @@ -1985,6 +1989,7 @@ def crs(self): datum = 'wgs84' # ellipse + ellps = None if '1866' in self.spheroid_name: ellps = 'clrk66' elif 'grs' in self.spheroid_name.lower(): From 479ad416f365e3d6a178700a72e26f8fdfa096d6 Mon Sep 17 00:00:00 2001 From: Mike Taves Date: Thu, 1 Aug 2019 09:25:11 +1200 Subject: [PATCH 2/2] fix(shapefile_utils.CRS): fix typo and UnboundLocalError error --- autotest/t007_test.py | 13 +++++++------ flopy/export/shapefile_utils.py | 12 +++++++----- 2 files changed, 14 insertions(+), 11 deletions(-) diff --git a/autotest/t007_test.py b/autotest/t007_test.py index 84537f9988..22a7ed9c43 100644 --- a/autotest/t007_test.py +++ b/autotest/t007_test.py @@ -1081,19 +1081,20 @@ def test_wkt_parse(): """Test parsing of Coordinate Reference System parameters from well-known-text in .prj files.""" - from flopy.utils.reference import crs + from flopy.export.shapefile_utils import CRS - prjs = glob.glob('../examples/data/prj_test/*') + geocs_params = [ + 'wktstr', 'geogcs', 'datum', 'spheroid_name', 'semi_major_axis', + 'inverse_flattening', 'primem', 'gcs_unit'] + prjs = glob.glob('../examples/data/prj_test/*') for prj in prjs: with open(prj) as src: wkttxt = src.read() wkttxt = wkttxt.replace("'", '"') if len(wkttxt) > 0 and 'projcs' in wkttxt.lower(): - crsobj = crs(esri_wkt=wkttxt) - geocs_params = ['wktstr', 'geogcs', 'datum', 'spheroid_name', - 'semi_major_axis', 'inverse_flattening', - 'primem', 'gcs_unit'] + crsobj = CRS(esri_wkt=wkttxt) + assert isinstance(crsobj.crs, dict) for k in geocs_params: assert crsobj.__dict__[k] is not None projcs_params = [k for k in crsobj.__dict__ diff --git a/flopy/export/shapefile_utils.py b/flopy/export/shapefile_utils.py index a9564ded1a..dbb1083c71 100755 --- a/flopy/export/shapefile_utils.py +++ b/flopy/export/shapefile_utils.py @@ -685,7 +685,7 @@ def __init__(self, prj=None, esri_wkt=None, epsg=None): @property def crs(self): """ - Dict mapping crs attibutes to proj4 parameters + Dict mapping crs attributes to proj4 parameters """ proj = None if self.projcs is not None: @@ -709,6 +709,7 @@ def crs(self): proj = 'longlat' # datum + datum = None if 'NAD' in self.datum.lower() or \ 'north' in self.datum.lower() and \ 'america' in self.datum.lower(): @@ -721,11 +722,12 @@ def crs(self): datum = 'wgs84' # ellipse - if '1866' in self.spheriod_name: + ellps = None + if '1866' in self.spheroid_name: ellps = 'clrk66' - elif 'grs' in self.spheriod_name.lower(): + elif 'grs' in self.spheroid_name.lower(): ellps = 'grs80' - elif 'wgs' in self.spheriod_name.lower(): + elif 'wgs' in self.spheroid_name.lower(): ellps = 'wgs84' return {'proj': proj, @@ -792,7 +794,7 @@ def parse_wkt(self): self.geogcs = self._gettxt('GEOGCS["', '"') self.datum = self._gettxt('DATUM["', '"') tmp = self._getgcsparam('SPHEROID') - self.spheriod_name = tmp.pop(0) + self.spheroid_name = tmp.pop(0) self.semi_major_axis = tmp.pop(0) self.inverse_flattening = tmp.pop(0) self.primem = self._getgcsparam('PRIMEM')