Ticket #173: ogr_sp.patch
File ogr_sp.patch, 5.9 KB (added by jmckenna, 5 years ago) |
---|
full patch with proper encoding |
-
ogr_sp.py
27 27 from osgeo import * 28 28 import osgeo.ogr 29 29 import osgeo.gdal 30 import l ibxml230 import lxml 31 31 import os 32 32 import sys 33 33 import zoo … … 35 35 def readFileFromBuffer(data,ext): 36 36 try: 37 37 geometry=[] 38 print >> sys.stderr,'/vsimem//temp1'+ext38 print ('/vsimem//temp1'+ext, file=sys.stderr) 39 39 #print >> sys.stderr,data 40 40 osgeo.gdal.FileFromMemBuffer('/vsimem//temp1'+ext,data) 41 41 ds = osgeo.ogr.Open('/vsimem//temp1'+ext) … … 48 48 ds.Destroy() 49 49 osgeo.gdal.Unlink('/vsimem//temp1'+ext) 50 50 return geometry 51 except Exception ,e:51 except Exception as e: 52 52 print >> sys.stderr,e 53 53 return [] 54 54 … … 69 69 def createGeometryFromWFS(conf,my_wfs_response): 70 70 try: 71 71 geom=osgeo.ogr.CreateGeometryFromGML(my_wfs_response.replace('<?xml version="1.0" encoding="utf-8"?>\n','').replace('<?xml version=\'1.0\' encoding="utf-8"?>\n','')) 72 except Exception ,e:73 print >> sys.stderr,"**"72 except Exception as e: 73 print ("**", file=sys.stderr) 74 74 print >> sys.stderr,e 75 75 geom=None 76 76 try: 77 print >> sys.stderr,geom is None77 print (geom is None, file=sys.stderr) 78 78 if geom is None: 79 79 if not(conf["lenv"].has_key("cnt")): 80 80 conf["lenv"]["cnt"]=0 … … 84 84 else: 85 85 return buildFeatureFromGeomtry(conf,geom,"GML","xml") 86 86 except: 87 print >> sys.stderr,"Unable to load file input data !!!\n\n\n"87 print ("Unable to load file input data !!!\n\n\n", file=sys.stderr) 88 88 89 89 def createLayerFromJson(conf,obj): 90 90 geom=osgeo.ogr.CreateGeometryFromJson(obj) … … 94 94 return buildFeatureFromGeomtry(conf,geom,"GeoJSON","json") 95 95 96 96 def extractInputs(conf,obj): 97 if obj.keys().count("cache_file"):98 print >> sys.stderr,obj97 if list(obj).count("cache_file"): 98 print (obj, file=sys.stderr) 99 99 geometry=[] 100 100 ds = osgeo.ogr.Open(obj["cache_file"]) 101 101 lyr = ds.GetLayer(0) … … 124 124 driverName = "GeoJSON" 125 125 extension = [ ".js" ] 126 126 opts=None 127 if obj.keys().count("schema")>0 and \127 if list(obj).count("schema")>0 and \ 128 128 obj["schema"]=="http://schemas.opengis.net/kml/2.2.0/ogckml22.xsd": 129 129 driverName = "KML" 130 130 extension = [ ".kml" ] 131 131 opts=None 132 132 drv = osgeo.ogr.GetDriverByName( driverName ) 133 print >> sys.stderr,drv133 print (drv, file=sys.stderr) 134 134 # Create virtual file 135 135 ds = drv.CreateDataSource( "/vsimem/store"+conf["lenv"]["sid"]+extension[0],options = opts) 136 print >> sys.stderr,ds136 print (ds, file=sys.stderr) 137 137 lyr = ds.CreateLayer( "Result", None, osgeo.ogr.wkbUnknown ) 138 print >> sys.stderr,lyr138 print (lyr, file=sys.stderr) 139 139 i=0 140 print >> sys.stderr,driverName141 print >> sys.stderr,extension140 print (driverName, file=sys.stderr) 141 print (extension, file=sys.stderr) 142 142 while i < len(geom): 143 143 if i==0 and driverName!="GeoJSON": 144 144 poDstFDefn=geom[i].GetDefnRef() … … 167 167 osgeo.gdal.Unlink("/vsimem/store"+conf["lenv"]["sid"]+extension[0]) 168 168 169 169 def BufferPy(conf,inputs,outputs): 170 print >> sys.stderr, "Starting service ..."170 print ("Starting service ...", file=sys.stderr) 171 171 try: 172 172 bdist=float(inputs["BufferDistance"]["value"]) 173 173 except: 174 174 bdist=1 175 print >> sys.stderr, bdist175 print (bdist, file=sys.stderr) 176 176 geometry=extractInputs(conf,inputs["InputPolygon"]) 177 177 i=0 178 178 rgeometries=[] … … 191 191 192 192 def Clean(conf,inputs,outputs): 193 193 from shapely.wkb import loads 194 print >> sys.stderr, "Starting service ..."194 print ("Starting service ...", file=sys.stderr) 195 195 features=extractInputs(conf,inputs["InputData"]) 196 196 i=0 197 197 rgeometries=[] … … 203 203 if geom.is_valid: 204 204 tmp.SetGeometryDirectly(resg) 205 205 rgeometries+=[tmp] 206 print >> sys.stderr,"valid !"206 print ("valid !", file=sys.stderr) 207 207 else: 208 print >> sys.stderr,"invalid !"209 print >> sys.stderr,geom.wkt[0:50]208 print ("invalid !", file=sys.stderr) 209 print (geom.wkt[0:50], sys.stderr) 210 210 features[i].Destroy() 211 211 resg.thisown=False 212 212 tmp.thisown=False … … 213 213 i+=1 214 214 outputResult(conf,outputs["Result"],rgeometries) 215 215 i=0 216 print >> sys.stderr,"Return"216 print ("Return", file=sys.stderr) 217 217 return zoo.SERVICE_SUCCEEDED 218 218 219 219 def TransformService(conf,inputs,outputs): … … 288 288 289 289 290 290 def EnvelopePy(conf,inputs,outputs): 291 print >> sys.stderr, inputs291 print (inputs, file=sys.stderr) 292 292 try: 293 293 bdist=float(inputs["BufferDistance"]["value"]) 294 294 except: … … 296 296 geometry=extractInputs(conf,inputs["InputPolygon"]) 297 297 tmp=geometry[0].GetGeometryRef().GetEnvelope() 298 298 outputs["Result"]["value"]=str(tmp[0])+','+str(tmp[2])+','+str(tmp[1])+','+str(tmp[3])+','+'urn:ogc:def:crs:OGC:1.3:CRS84' 299 print >> sys.stderr,outputs["Result"]299 print (outputs["Result"], file=sys.stderr) 300 300 return 3 301 301 302 302 def UnionPy(conf,inputs,outputs): … … 328 328 geometry1=extractInputs(conf,inputs["InputEntity1"]) 329 329 geometry2=extractInputs(conf,inputs["InputEntity2"]) 330 330 331 print >> sys.stderr,str(len(geometry1))+" "+str(len(geometry2))331 print (str(len(geometry1))+" "+str(len(geometry2)), file=sys.stderr) 332 332 333 333 rgeometries=[] 334 334 fids=[] … … 354 354 geometry2[i].Destroy() 355 355 i+=1 356 356 outputResult(conf,outputs["Result"],rgeometries) 357 print >> sys.stderr,"/outputResult"357 print ("/outputResult", file=sys.stderr) 358 358 return 3 359 359 360 360 def DifferencePy(conf,inputs,outputs):