Files
PyCRS/pycrs/webscrape.py
T
Karim Bahgat a8aad24a13 Added almost all params, made front API usable, and added crs transform draw testing.
Next step figure out more stable proj4 parsing of datums and proj etc,
with adding more specific names.
Then consistently make to_esriwkt work.
2015-06-30 04:14:12 +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")