#!/usr/bin/python2.5 """ * Add -fPIC to CPPFLAGS, CFLAGS in Library.mak * Build a shared lib with: gcc-3.3 -g -lstdc++ -shared -Wl,-soname,csmap -o csmap.so *.o * Run with: LD_LIBRARY_PATH="." python2.5 epsg.py 2805 """ import ctypes import sys import osr wkt = ('None', 'Ogc', 'GeoTiff', 'Esri', 'Oracle', 'GeoTools', 'Epsg', 'Oracle9', 'Autodesk', 'Unknown', 'AppAlt', 'LclAlt', 'Legacy') types = dict( zip(wkt, range( len(wkt) )) ) def run(code, wkt_type=5): csmap = ctypes.CDLL("csmap.so") csmap.CS_altdr("../Dictionaries") name = ctypes.create_string_buffer(64) result = csmap.csMapIdToNameC(15, # geographic name, ctypes.sizeof(name), 4, # cs-map internal 1, # EPSG code) if result: result = csmap.csMapIdToNameC(16, # projected name, ctypes.sizeof(name), 4, # cs-map internal 1, # EPSG code) wkt = ctypes.create_string_buffer(2048) csmap.CS_cs2Wkt (wkt, ctypes.sizeof(wkt),name, wkt_type) srs = osr.SpatialReference() srs.ImportFromWkt(str(wkt.value)) print srs.ExportToPrettyWkt() if __name__ == "__main__": if (len(sys.argv) > 2): if sys.argv[2] == "all": for key in types.keys(): print key run(int(sys.argv[1]), types[key]) else: run(int(sys.argv[1]), types[sys.argv[2]]) elif len(sys.argv) == 2: run(int(sys.argv[1])) else: print "%s 2805 (%s)" % (sys.argv[0], "|".join(types))