def from_user_input(cls, value, morph_from_esri_dialect=False): """Make a CRS from various input Dispatches to from_epsg, from_proj, or from_string Parameters ---------- value : obj A Python int, dict, or str. morph_from_esri_dialect : bool, optional If True, items in the input using Esri's dialect of WKT will be replaced by OGC standard equivalents. Returns ------- CRS """ if isinstance(value, cls): return value elif isinstance(value, int): return cls.from_epsg(value) elif isinstance(value, dict): return cls(**value) elif isinstance(value, string_types): obj = cls() obj._crs = _CRS.from_user_input( value, morph_from_esri_dialect=morph_from_esri_dialect) return obj else: raise CRSError("CRS is invalid: {!r}".format(value))
def from_user_input(cls, value, morph_from_esri_dialect=False): """Make a CRS from various input Dispatches to from_epsg, from_proj, or from_string Parameters ---------- value : obj A Python int, dict, or str. morph_from_esri_dialect : bool, optional If True, items in the input using Esri's dialect of WKT will be replaced by OGC standard equivalents. Returns ------- CRS """ if isinstance(value, cls): return value elif isinstance(value, int): return cls.from_epsg(value) elif isinstance(value, dict): return cls(**value) elif isinstance(value, string_types): obj = cls() obj._crs = _CRS.from_user_input(value, morph_from_esri_dialect=morph_from_esri_dialect) return obj else: raise CRSError("CRS is invalid: {!r}".format(value))
def from_string(cls, string, morph_from_esri_dialect=False): """Make a CRS from an EPSG, PROJ, or WKT string Parameters ---------- string : str An EPSG, PROJ, or WKT string. morph_from_esri_dialect : bool, optional If True, items in the input using Esri's dialect of WKT will be replaced by OGC standard equivalents. Returns ------- CRS """ try: string = string.strip() except AttributeError: pass if not string: raise CRSError("CRS is empty or invalid: {!r}".format(string)) elif string.upper().startswith('EPSG:'): auth, val = string.split(':') if not val: raise CRSError("Invalid CRS: {!r}".format(string)) return cls.from_epsg(val) elif string.startswith('{') or string.startswith('['): # may be json, try to decode it try: val = json.loads(string, strict=False) except ValueError: raise CRSError('CRS appears to be JSON but is not valid') if not val: raise CRSError("CRS is empty JSON") else: return cls.from_dict(**val) elif string.endswith("]"): return cls.from_wkt( string, morph_from_esri_dialect=morph_from_esri_dialect) elif "=" in string: return cls.from_proj4(string) obj = cls() obj._crs = _CRS.from_user_input( string, morph_from_esri_dialect=morph_from_esri_dialect) return obj