Skip to content
Snippets Groups Projects
Commit 5fd51896 authored by Maël Méliani's avatar Maël Méliani
Browse files

Changed method to get projection from a featureType or a coverage. To develop...

parent 976f89a5
No related branches found
No related tags found
No related merge requests found
......@@ -301,6 +301,15 @@ class LayerModel(MetadataMixin):
mapscript.projectionObj('+init=epsg:4326'))
return stores.Extent(rect.minx, rect.miny, rect.maxx, rect.maxy)
def get_proj4(self):
return self.ms.getProjection()
def get_wkt(self):
return tools.proj4_to_wkt(self.ms.getProjection())
def get_authority(self):
return tools.wkt_to_authority(self.get_wkt())
class FeatureTypeModel(LayerModel):
"""
......
......@@ -250,8 +250,8 @@ class featuretype(object):
"title": ft.get_mra_metadata("title", ft.name),
"abstract": ft.get_mra_metadata("abstract", None),
"keywords": ft.get_mra_metadata("keywords", []),
"srs": dsft.get_projection(),
"nativeCRS": dsft.get_native(),
"srs": "%s:%s" % (ft.get_authority()[0], ft.get_authority()[1]),
"nativeCRS": ft.get_wkt(),
"attributes": [{
"name": f.get_name(),
"minOccurs": 0 if f.is_nullable() else 1,
......@@ -405,14 +405,15 @@ class coverage(object):
@HTTPCompatible()
def GET(self, map_name, ws_name, cs_name, c_name, format):
mf, ws = get_mapfile_workspace(map_name, ws_name)
# with webapp.mightNotFound("coveragestore", workspace=ws_name):
# cs = ws.get_coveragestore(cs_name)
with webapp.mightNotFound("coverage", coveragestore=cs_name):
c = ws.get_coveragemodel(c_name, cs_name)
with webapp.mightNotFound("coveragestore", workspace=ws_name):
cs = ws.get_coveragestore(cs_name)
extent = c.get_extent()
latlon_extent = cs.get_latlon_extent()
latlon_extent = c.get_latlon_extent()
return {"coverage": ({
"name": c.name,
......@@ -424,7 +425,8 @@ class coverage(object):
"title": c.get_mra_metadata("title", c.name),
"abstract": c.get_mra_metadata("abstract", None),
"keywords": c.get_mra_metadata("keywords", []),
"srs": cs.get_projection(),
"srs": "%s:%s" % (c.get_authority()[0], c.get_authority()[1]),
"nativeCRS": c.get_wkt(),
"nativeBoundingBox": {
"minx": extent.minX(),
"miny": extent.minY(),
......
......@@ -404,9 +404,7 @@ class Coveragestore(object):
return self.backend.GetProjection()
def get_proj4(self):
proj = osr.SpatialReference()
proj.ImportFromWkt(self.get_projection())
return proj.ExportToProj4()
return tools.wkt_to_proj4(self.get_projection())
def nbbands(self):
return self.backend.RasterCount
......
......@@ -34,6 +34,7 @@ import pyxml
import webapp
import xml.etree.ElementTree as etree
from osgeo import osr
__config = None
......@@ -156,4 +157,26 @@ def is_hidden(path):
# MacOSX has at least four ways to hide files...
return os.path.basename(path).startswith(".")
def wkt_to_proj4(wkt):
srs = osr.SpatialReference()
srs.ImportFromWkt(wkt)
return srs.ExportToProj4()
def proj4_to_wkt(proj4):
srs = osr.SpatialReference()
srs.ImportFromProj4(proj4)
return srs.ExportToWkt()
def wkt_to_authority(wkt):
srs = osr.SpatialReference()
srs.ImportFromWkt(wkt)
# Are there really no other with osgeo? Oo
if srs.GetAuthorityCode('PROJCS') == None and srs.GetAuthorityCode('GEOGCS') != None :
return srs.GetAuthorityName('GEOGCS'), srs.GetAuthorityCode('GEOGCS')
if srs.GetAuthorityCode('PROJCS') != None:
return srs.GetAuthorityName('PROJCS'), srs.GetAuthorityCode('PROJCS')
else:
raise KeyError("Unable to get authority from %s" % wkt)
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment