From bf5802ae512aa94b99723e866fd8c02afc831452 Mon Sep 17 00:00:00 2001 From: Karim Bahgat Date: Thu, 30 Jul 2015 16:00:45 +0200 Subject: [PATCH] Colleted esri_wkt and esri_wkt parsing into one function which works, and added find() methods in each mod for easier name-to-obj parsing --- pycrs/datums.py | 30 +++++++ pycrs/datums.pyc | Bin 1752 -> 2554 bytes pycrs/ellipsoids.py | 37 +++++++++ pycrs/ellipsoids.pyc | Bin 1950 -> 2745 bytes pycrs/parameters.py | 177 +++++++++++++++++++++++++++++++++--------- pycrs/parameters.pyc | Bin 27052 -> 29500 bytes pycrs/parser.pyc | Bin 11341 -> 11422 bytes pycrs/projections.py | 56 ++++++++++++- pycrs/projections.pyc | Bin 6806 -> 7817 bytes pycrs/units.py | 25 ++++++ pycrs/units.pyc | Bin 889 -> 1529 bytes pycrs/webscrape.pyc | Bin 2352 -> 2352 bytes tester.py | 91 ++++++++++++++++------ 13 files changed, 350 insertions(+), 66 deletions(-) diff --git a/pycrs/datums.py b/pycrs/datums.py index 20a1606..0d3cbf4 100644 --- a/pycrs/datums.py +++ b/pycrs/datums.py @@ -1,4 +1,26 @@ + +def find(datumname, crstype, strict=False): + if not strict: + datumname = datumname.lower() + for itemname,item in globals().items(): + if itemname.startswith("_"): + continue + try: + if hasattr(item, crstype): + itemname = getattr(item, crstype) + if not strict: + itemname = itemname.lower() + if datumname == itemname: + return item + except: + pass + else: + return None + + + + class WGS84: proj4 = "WGS84" ogc_wkt = "WGS_1984" @@ -31,6 +53,14 @@ class NAD27: ellipsdef = "" # ellipsoids... to_wgs84 = None +class SphereArcInfo: + proj4 = "" # no name + ogc_wkt = "D_Sphere_ARC_INFO" # confirmed but odd that uses D_ + esri_wkt = "D_Sphere_ARC_INFO" + + semimaj_ax = 6370997.0 + inv_flat = 0.0 + class Unknown: proj4 = "unknown" # no datum name, just ellips + towgs84 params... ogc_wkt = "Unknown" diff --git a/pycrs/datums.pyc b/pycrs/datums.pyc index cdade30cc9d9d6bf49e9ddab6e5325c296d1f3fb..e74ee253157b91b227481f098c3ae9f26d6cc9c7 100644 GIT binary patch literal 2554 zcmc&#UvC>l5T83cj+;6SZ3us)Qb3}}PY6<@7=%cixG6!xg)>o#WmsKr&(1maow;4( zT1sA^yzs)e;Ei|G7rq9c0Umir{AMn3gVj(JBK7Q<+nt@6o%!9&Ztl;;g_Tzx?FMxG zHJiL`5fuzNEfD}Jn4DTS4kJA zBB)##sm(_xN!h!D#TrQ7uNO*WW(OcqP{L+(=gBiXsfQyB6#hhm#; zlVdCF3U3FZ58Eb0d+_Ht4){IL9&l?im0g6|KukocJP!`{MEztOrk1DOesbUM8<9pf z92mO*sj+@)%{a3AqO|WD-`Zn?(8`#xXe4o1W`Fh)nD*^x5c`8rY=YF-$uP79ahFDc zwM7hh57A+Jo|N$>VWxu7*8A;U6Q-tp5Dk)cJqbpGFt(E6SG&DNwc=9d9ZKB3qQ>{D(^8cYJ zDZPZf3|B${$l>P}oRciqR@LV1DR3Od(}4q&0B)XI1qP0z_O622H^4Ha;Pvy=k4G$=n_sfm%|M={;U!~SX z>7SaXL{GNyuEDXl%#3^ATVeJBvlp2$Fc*gO%W(D@XclQMhDNPky)}jT-1T`Kt}O4< zNK(76Y7A%K$EwcF$_0DNa)xy^v(78>jk4N(3MyO$7Yhx?%{ZR{&Fb2Jh6W9c)n7X)cT0YTc3SzTqGRn6N{ zJB{tTT?jXR{^VYb2l7ZyommOl#Sspof!|a9gY2}AzfqmOZ!fH4UPmBR&}><70q({J zaWamlnDEW_Z%5PV!Z>}V%LzQnoOw6lBu z|DmHXvnx+0;eO0LbMDNUnUC&Ue&gQr>=_T+$M{}O-VM1EWk^mNWN-)E0(<-7TTln& z8p?oLpd92IN2p&COshfjOgQl91u275ZkViZe{w{QNv9T_=IF$t29m~OgVIg9_ZmBN?vTPG z{9rdJeMoBL*$|Gr%!&5xE@QD5RzAdJBi+EY-vIK*?8 z-YTzzXSPT6&s*y28{ekuUEH~N*X7b(SL5ZntwbC}JY)>pY0_BH$R%~(J#Kd43S=7U zfqpGPD{OfU*Sp_^GXB&(h&=TS!Qo-lwY-RQBrli;WcZqSqYu|w>B4XUD8L1v09URD z7Z+;to{~%pz;$!2^bh3LO5rz*ob&LPKZ||j>=|~t%IX@cSypqb=2(n=jx`t75=4Shpj_Na8(fG{22 zfD8h{FLTSTmKTQx!oH4Bng@u-J7|$BUVp-+KmF_Xud-cq*`;${CCFguyg4e7mo|f? z^6Ki)_3I|-M`?3)RgGt%U5;IUe0FyB0|RmV_}Vts#R@7Dze?~(7`@3#j`&?n7h?~zxr@Eyp&9@!aa%I6OG z&FZ6N6MsSio59m3kUk@9Zalg**i1j0A-8$8fl$N!Z(s($-93rlv2ZW>G@n?Q9i1)o GzkdT)u@N!= delta 496 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 literal 27052 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

mOjNr1^i++X2ao4ddV}i#5 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 U-b7^ob3+68UmE(g$ss-Pe{&O&EdT%j diff --git a/pycrs/projections.py b/pycrs/projections.py index 707633d..a24c1cb 100644 --- a/pycrs/projections.py +++ b/pycrs/projections.py @@ -1,20 +1,46 @@ +def find(projname, crstype, strict=False): + if not strict: + projname = projname.lower() + for itemname,item in globals().items(): + if itemname.startswith("_"): + continue + try: + if hasattr(item, crstype): + itemname = getattr(item, crstype) + if not strict: + itemname = itemname.lower() + if projname == itemname: + return item + except: + pass + else: + return None + + + + + class Robinson: proj4 = "robin" ogc_wkt = "Robinson" + esri_wkt = "Robinson" class UTM: proj4 = "utm" ogc_wkt = "Transverse_Mercator" + esri_wkt = "Transverse_Mercator" class ObliqueMercator: proj4 = "omerc" ogc_wkt = "Hotine_Oblique_Mercator" + esri_wkt = "Hotine_Oblique_Mercator_Azimuth_Natural_Origin" class AlbersEqualArea: proj4 = "aea" - ogc_wkt = "Albers" + ogc_wkt = "Albers_Conic_Equal_Area" + esri_wkt = "Albers" class CylindricalEqualArea: proj4 = "cea" @@ -24,90 +50,112 @@ class CylindricalEqualArea: class EquiDistantConic: proj4 = "eqdc" ogc_wkt = "Equidistant_Conic" + esri_wkt = "Equidistant_Conic" class TransverseMercator: proj4 = "tmerc" ogc_wkt = "Transverse_Mercator" + esri_wkt = "Transverse_Mercator" class GallStereographic: proj4 = "gall" ogc_wkt = "Gall_Stereographic" + esri_wkt = "Gall_Stereographic" class Gnomonic: proj4 = "gnom" ogc_wkt = "Gnomonic" + esri_wkt = "Gnomonic" class LambertAzimuthalEqualArea: proj4 = "laea" ogc_wkt = "Lambert_Azimuthal_Equal_Area" + esri_wkt = "Lambert_Azimuthal_Equal_Area" class MillerCylindrical: proj4 = "mill" ogc_wkt = "Miller_Cylindrical" + esri_wkt = "Miller_Cylindrical" class Mollweide: proj4 = "moll" ogc_wkt = "Mollweide" + esri_wkt = "Mollweide" class ObliqueStereographic: proj4 = "sterea" ogc_wkt = "Oblique_Stereographic" + esri_wkt = "Stereographic_North_Pole" class Orthographic: proj4 = "ortho" ogc_wkt = "Orthographic" + esri_wkt = "Orthographic" class PolarStereographic: proj4 = "stere" - ogc_wkt = "Polar_Stereographic" + ogc_wkt = "Polar_Stereographic" # could also be just stereographic + esri_wkt = "Stereographic" # but also spelled with additional _South/North_Pole, for the same projection and diff params (maybe just for humans)?... class Sinusoidal: proj4 = "sinu" ogc_wkt = "Sinusoidal" + esri_wkt = "Sinusoidal" class VanDerGrinten: proj4 = "vandg" ogc_wkt = "VanDerGrinten" + esri_wkt = "Van_der_Grinten_I" class Equirectangular: proj4 = "eqc" ogc_wkt = "Equirectangular" + esri_wkt = "Equidistant_Cylindrical" class LambertConformalConic: proj4 = "lcc" - ogc_wkt = "Lambert_Conformal_Conic" + ogc_wkt = "Lambert_Conformal_Conic" # possible has some variants + esri_wkt = "Lambert_Conformal_Conic" class Krovak: proj4 = "krovak" ogc_wkt = "Krovak" + esri_wkt = "Krovak" class NearSidedPerspective: proj4 = "nsper" ogc_wkt = "Near_sided_perspective" + esri_wkt = "Near_sided_perspective" # not confirmed class TiltedPerspective: proj4 = "tsper" ogc_wkt = "Tilted_perspective" + esri_wkt = "Tilted_perspective" # not confirmed class InteruptedGoodeHomolosine: proj4 = "igh" ogc_wkt = "Interrupted_Goodes_Homolosine" + esri_wkt = "Interrupted_Goodes_Homolosine" class Larrivee: proj4 = "larr" ogc_wkt = "Larrivee" + esri_wkt = "Larrivee" # not confirmed class LamberEqualAreaConic: proj4 = "leac" ogc_wkt = "Lambert_Equal_Area_Conic" + esri_wkt = "Lambert_Equal_Area_Conic" # not confirmed class Mercator: proj4 = "merc" - ogc_wkt = "Mercator" + ogc_wkt = "Mercator" # has multiple varieties + esri_wkt = "Mercator" class ObliqueCylindricalEqualArea: proj4 = "ocea" ogc_wkt = "Oblique_Cylindrical_Equal_Area" + esri_wkt = "Oblique_Cylindrical_Equal_Area" diff --git a/pycrs/projections.pyc b/pycrs/projections.pyc index a9a8addecfdd50a82956b7430aac1fe80276cae9..8b7c5097710a9d4a73fec4ae9097aa8dd194cde6 100644 GIT binary patch literal 7817 zcmc&(TXPge6h6BNF<`jg5fnu+ir|Hd3Mj-x!ZpMWh*E1!P4y^ z;r%jNwzDo0h^WX@ReW>yqu2$085h{CFY~i+uNs*czwHgF5@EZ`#tR%ab8_ zGAxgWif%bg9>jhtaE~<8%&sm6cEq8jVbi*MIE1^0 zkMm+2@8Y`bV|C8?&pEX0EZk3iJkt3z{}e z;_TG&DvT)dZ5U&TLj9M~No}OIy>=LFq&9?}@7rr*wHI+UT6fx*WIl|uByRF{zG$Y; z(6U450&!sgJyt$Kg7e+|VKE(}I+LYDFxzl<&kmkPhMwmv>3OY0+Yv8mC@Ou%87Nt3 zdXJVmRtd5+Op_>j6oeXVfFU5vX<${!hvUum@!auUVcpb9*;6OuN8s`;v$VCmsf28q zo|GisOp+pDnoXikMNv^6c@}!yMJrC^F=`EEHWqlfqmWW!Sl3kPVvctot;mVdAGY<= zlF2w;#HducNTUx7hwpSojNtn9e@TNqVQM0?zBX|Ec zNn3ujfh3-^qh_a;UCSSG-0Cy=X|nBO%!z#?O&-KDEY4Z6c_q@4|k5xL5<9&x# zoUz}vQ2MUI@wkwFuS$<+2W0=jmjN4_XE_X9bA>2l9xEC2lX~S^k of{Nj^H=Hbn7VERd27hE41>(id4?3SRYG>!rjqTgL>FNLe1K*=Cs{jB1 literal 6806 zcmc&&>rxy=6h36R6C{KXLT;iYy2e}$##}IgK(fSevjIz~tr~|t<1#Wk12es(@UK3C z59mAi0-mpT>0zQ$wTliRJv)7B`s@DsoIaN>{5jbFNB#GW3N`-~CQbZZzNuvlz04ERGyD2^_myzq+Ig#LVc^edN8Nf%DV>@`2u)e zMf*{h+}%Ae3xTO8SWI_EcZWuAV|}SrZWvbAH9aD~>#-Xq`?4O-S@PnFtE1SERoDfE zFBPU!;FmHnZzrVFEr{5wl+KX!R<;6vukIbLrB!NJW>ga*dQ9FHBJGEs)5Of1V4tjD zKw6gIY_KJ}{c5l72D7o}wn`8haXnXK_Zm<+sq3sv2nD5VaDe6x0zc%~ueiZ6lrGDc z-rtTI4qT@_a3EF@Vi&Whj)8TsRYfTGpX|~cOfQN3|NhK@F^)-s{l=M-Q+G~YWmW#X zpJ+GKb5ZD5T2&*?l()wfJ=_H22AE^ea#AUXU6Pin^t|*^k8qMhsBs8Yui)iG26l5b zLk3%0a)V$^d$AW)V|RDEJw;UoL}P1!=49YTgorsBM|9fz|Cd)vOOce%e zT=Ij!i;wuscHBlyK#Vmu(3~T1Iq7mjsNBwwL#SJdg5aI!v)2|W8LTD+B_|4)>VAd- z?5mk5WKMXiY!E0CcpO)crjV!NHEzoMQ&QC ztEdO^n-dRAwID6k2b@teFiMX3Qxwgi|v)(q8rCzq%E^Uv=E0Ht66!;i2>Wm1p3$(8D;TtSoi~qbJ=m`p@k5#56aq`mp~j#vKl1&r9eXT$aN$Ppn3LDb;Wd7dB64-ja5! z$Zb{}zwUI*9M%-o7#FtdKd(bu>M%xa+qkc9lqRk>1 z4{gpadY19?@m}<5vJrNo(FD;WN#|Ol2}`JVS&mTyyju`t0<&V)u>#{mu6VLHiVm%3UC_uF1)v}>TJEOZFReWvXz6IG z{!U}f^ia|$^zaI_@T!P45kh2m9pYbsl1w+Teg`FeZ(GZM3<=%TKFYu2WLjFSmbRl^ z6dZ4N{tuKJNPI^sSoCM>3{A6fl96fS54PbYXxdk0Jd_A$JkI^|)DY{@Y)T&sC0bQu JZMC{u{Rsd#Egb*= delta 255 zcmey#{gW+=`7RW#NMT_};bcf*g$n_durUN{Z~;vyVFePtsU@jJlNYjRPX5l!JDHzZkda}sB6B}T zih+6ZR^~K$4j@Yd#18`5AH)J8z+5&Ei+!>ci#IDs4aejzmNZe^YPf-FcqfOl$_s$i b0C@~SAbmmHKqI^+-(?lz0GTb!D$EK1cE2Wd diff --git a/pycrs/webscrape.pyc b/pycrs/webscrape.pyc index ca30c968aa99af978b554e27b4743553dc46e48f..dd753cd96426ac0782b95a1a9facf073f795403e 100644 GIT binary patch delta 16 XcmdlWv_XiS`7