Files
PyCRS/pycrs/webscrape.py
T
Karim Bahgat fcc463fa76 Basic fromproj4 works, except need better handle when unprojected (longlat and latlong)
Also just need to expand to more projection name, datum name, and
ellipsoid name definitions, and also additional special parameters.

After that, test, and move onto from_wkt()...
2015-06-29 03:29:02 +02:00

78 lines
2.5 KiB
Python

import urllib2
import re
def build_crs_table(savepath):
# create table
outfile = open(savepath, "wb")
# create fields
fields = ["codetype", "code", "proj4", "ogcwkt", "esriwkt"]
outfile.write("\t".join(fields) + "\n")
# make table from url requests
for codetype in ("epsg", "esri", "sr-org"):
print(codetype)
# collect existing proj list
print("fetching list of available codes")
codelist = []
page = 1
while True:
try:
link = 'http://spatialreference.org/ref/%s/?page=%s' %(codetype,page)
html = urllib2.urlopen(link).read()
codes = [match.groups()[0] for match in re.finditer(r'/ref/'+codetype+'/(\d+)', html) ]
if not codes: break
print("page",page)
codelist.extend(codes)
page += 1
except:
break
print("fetching string formats for each projection")
for i,code in enumerate(codelist):
# check if code exists
link = 'http://spatialreference.org/ref/%s/%s/' %(codetype,code)
urllib2.urlopen(link)
# collect each projection format in a table row
row = [codetype, code]
for resulttype in ("proj4", "ogcwkt", "esriwkt"):
try:
link = 'http://spatialreference.org/ref/%s/%s/%s/' %(codetype,code,resulttype)
result = urllib2.urlopen(link).read()
row.append(result)
except:
pass
print("projection %i of %i added" %(i,len(codelist)) )
outfile.write("\t".join(row) + "\n")
# close the file
outfile.close()
def crscode_to_string(codetype, code, format):
link = 'http://spatialreference.org/ref/%s/%s/%s/' %(codetype,code,format)
result = urllib2.urlopen(link).read()
return result
def crsstring_to_string(string, newformat):
# search string, if string is correct there should only be one correct match
link = 'http://spatialreference.org/ref/?search=%s' %string
searchresults = urllib2.urlopen(link).read()
# pick the first result
# ...regex...
# go to its url, with extension for the newformat
link = 'http://spatialreference.org/ref/%s/%s/%s/' %(codetype,code,newformat)
result = urllib2.urlopen(link).read()
return result
if __name__ == "__main__":
build_crs_table("crstable.txt")