diff RestDbGisApi.py @ 278:4ade9b80b563 default tip

more cleanup. descriptions work better now.
author casties
date Fri, 24 Feb 2012 16:41:30 +0100
parents 55bc9972fb1b
children
line wrap: on
line diff
--- a/RestDbGisApi.py	Thu Feb 23 21:37:37 2012 +0100
+++ b/RestDbGisApi.py	Fri Feb 24 16:41:30 2012 +0100
@@ -481,7 +481,8 @@
                    kmlPlace['TimeStamp'] = '%s'%beg_yr
                   
             if geomField=='point':
-                kmlPlace['description'] = "<![CDATA[%s]]>"%desc
+                #kmlPlace['description'] = "<![CDATA[%s]]>"%desc
+                kmlPlace['description'] = desc
             
                 kmlPlace['icon'] = '#marker_icon_'+colorField
                 kmlPlace['coord_x'] = str(xCoord)
@@ -603,114 +604,6 @@
 
     ## legacy methods...    
 
-    def getKmlUrl(self,schema='chgis',table='mpdl',args={'doc':None,'id':None}):
-        logging.debug("getKmlUrl")
-        id=args.get('id')
-        doc=args.get('doc')
-        data = self.getDataForGoogleMap(schema,table,id,doc)
-        kml=self.getKMLname(data=data,table=table)
-        baseUrl = self.absolute_url()
-        return "%s/daten/%s"%(baseUrl,kml)
-
-    def getDataForGoogleMap(self,schema='chgis',table='mpdl',id=None,doc=None):
-        logging.debug("getDataForGoogleMap")
-        qstr="SELECT * FROM "+schema+"."+table
-        try:
-            if id is not None:
-                qstr=qstr+" WHERE "
-                for id_item in id.split(","):
-                    if table=='mpdl':
-                        qstr=qstr+" mpdl_xmlsource_id = '"+id_item+ "' OR"
-                    else:
-                        qstr=qstr+" cast(id as text) LIKE '"+id_item+ "' OR"
-                qstr=str(qstr).rsplit(" ",1)[0] #to remove last " and "
-            data=self.ZSQLSimpleSearch(qstr)
-            return data
-        except:
-            return qstr
-
-
-    def getKMLname(self,data=[],table=""):
-        logging.debug("getKMLname")
-        #session=context.REQUEST.SESSION
-        kml4Marker="<kml xmlns=\'http://www.opengis.net/kml/2.2\'><Document>"
-        kml4Marker+="<Style id=\'marker_icon_red\'><IconStyle><scale>15</scale><Icon><href>http://mappit.mpiwg-berlin.mpg.de/mappit/icons/dot_red.png</href></Icon></IconStyle></Style>\n"
-        kml4Marker+="<Style id=\'marker_icon_black\'><IconStyle><scale>15</scale><Icon><href>http://mappit.mpiwg-berlin.mpg.de/mappit/icons/dot_black.png</href></Icon></IconStyle></Style>\n"
-        kml4Marker+="<Style id=\'marker_icon_blue\'><IconStyle><scale>15</scale><Icon><href>http://mappit.mpiwg-berlin.mpg.de/mappit/icons/dot_blue.png</href></Icon></IconStyle></Style>\n"
-        kml4Marker+="<Style id=\'marker_icon_green\'><IconStyle><scale>15</scale><Icon><href>http://mappit.mpiwg-berlin.mpg.de/mappit/icons/dot_green.png</href></Icon></IconStyle></Style>\n"
-        kml4Marker+="<Style id=\'marker_icon_violett\'><IconStyle><scale>15</scale><Icon><href>http://mappit.mpiwg-berlin.mpg.de/mappit/icons/dot_violett.png</href></Icon></IconStyle></Style>\n"
-        initializeStringForGoogleMaps=""
-        #doLine=container.getVar('doLine')
-        # Mapping a set of points from table-based SQL-query:
-        if data!=None:
-            try:
-                SQL='SELECT "attribute with gis_id" FROM public.metadata WHERE tablename = %s'
-                res = self.executeSQL(SQL, (table,))
-                gisIDattribute = res['rows'][0][0]
-            except:
-                return "table not registered within metadata"
-            
-            for dataset in data:
-                try:  
-                    xCoord=getattr(dataset,'longitude')
-                    yCoord=getattr(dataset,'latitude')
-                except:
-                    try:
-                        xCoord=getattr(dataset,'x_coord')
-                        yCoord=getattr(dataset,'y_coord')
-                    except:
-                        #try:
-                        gisID=getattr(dataset,gisIDattribute)
-                        coords=self.getPoint4GISid(gisID)
-                        if coords!=None:
-                            xCoord=coords[0]
-                            yCoord=coords[1]
-                        # except:
-                        #     return "no coordinates found"
-                        
-                if float(xCoord)!=0:
-                    if float(yCoord)!=0:
-                        kml4Marker=kml4Marker+"<Placemark>"
-                        kml4Marker=kml4Marker+"<description> <![CDATA[<b>"
-                        for values in dataset:
-                            #logging.debug("values=%s"%repr(values))
-                            if values != (None, None):
-                                if str(values).find('name')>-1:
-                                    kml4Marker=kml4Marker+"<name>"+str(values[1])+"</name>\n"
-                                    continue
-                                elif str(values).find('place')>-1:
-                                    kml4Marker=kml4Marker+"<name>"+str(values[1])+"</name>\n"
-                                    continue
-                        
-                                kml4Marker=kml4Marker+str(values)+": "
-                                attribute_string=str(values).replace("'","__Apostroph__")
-                                attribute_string=str(attribute_string).replace('"','__DoubleApostroph__')
-                                attribute_string=str(attribute_string).replace(';','__$$__')
-                                attribute_string=str(attribute_string).replace('&','&amp;')
-                                if str(attribute_string).find('http')>-1:
-                                    attribute_string='<A HREF=' + str(attribute_string) + ' target="_blank">' + str(attribute_string) + '</A>'
-                                kml4Marker=kml4Marker+attribute_string+"</a><br>\n"
-                                  
-                        kml4Marker=kml4Marker+"]]></description>\n"
-                        kml4Marker=kml4Marker+"<styleURL>#marker_icon_red</styleURL>\n"
-                        kml4Marker=kml4Marker+"<Point>"
-                              
-                        kml4Marker=kml4Marker+"<coordinates>"+str(xCoord)+","+str(yCoord)+",0</coordinates>\n"
-                        kml4Marker=kml4Marker+"</Point>\n"
-                        kml4Marker=kml4Marker+"</Placemark>\n"
-        
-            kml4Marker=kml4Marker+"</Document>\n</kml>"
-            kmlFileName="marker"+str(time.time())+".kml"
-        
-            #kml4Marker=str(kml4Marker).replace('&','$$')
-            #kml4Marker=str(kml4Marker).replace(';','__$$__')
-            #kml4Marker=str(kml4Marker).replace('#','__SHARP__')
-            isLoadReady='false'
-            while isLoadReady=='false':
-                isLoadReady=self.RESTwrite2File(self.daten,kmlFileName,kml4Marker)
-
-        return kmlFileName
-    
     def trydatahas_key(self,data,index,key_string):
         logging.debug("trying:"+key_string)
         try:
@@ -718,82 +611,6 @@
         except:
             return 'false'
 
-#    def getGoogleMapString(self,kml):
-#        logging.debug("getGoogleMapString")
-#        printed= '<body %s> '%kml +"""\n <div id="map_canvas" style="width: 98%; height: 95%"> </div> \n </body>" \n </html>"""
-#        return printed
-    
-    def getPoint4GISid(self,gis_id):
-        j=0
-        coords=(0,0)
-        if gis_id != None:
-         while (True):
-           j=j+1
-           if (j>100):                                         # FJK: just to prevent endless loops
-             break
-           if (gis_id.isdigit()):                              # FJK: regular exit from while-loop
-             break
-           else:
-             gis_id=gis_id.strip('abcdefghijklmnopqrstuvwxyz_') # FJK: to strip all letters 
-             gis_id=gis_id.strip()                              # FJK: to strip all whitespaces
-         resultpoint = [0,0]
-         results = None
-         try:
-            if int(gis_id)>0:
-                SQL="SELECT x_coord,y_coord FROM chgis.chgis_coords WHERE gis_id LIKE cast("+ str(gis_id) +" as text);"
-                results=self.ZSQLSimpleSearch(SQL)
-                #print results
-                if results != None:
-                    for result in results:
-                        resultpoint=[getattr(result,str('x_coord')),getattr(result,str('y_coord'))]
-                if resultpoint !=[0,0]: 
-                    return resultpoint
-            else:
-                coords=self.getCoordsFromREST_gisID(gis_id)
-                SQL="INSERT INTO chgis.chgis_coords (chgis_coords_pkey,gis_id,x_coord,y_coord) VALUES (default," +gis_id+ "," +coords[0][1]+ "," +coords[0][0]+ "); ANALYZE chgis.chgis_coords;"
-                returnstring=self.ZSQLSimpleSearch(SQL)
-                return coords[0]
-         except:
-            return "gis_id not to interpretable:"+str(gis_id)
-        else:
-            return coords[0]
-
-    def getCoordsFromREST_gisID(self,gis_id):
-        gis_id=gis_id.strip()
-        coordlist=[]
-        i=0
-        while (i<5 and coordlist==[]):
-            urlinfo=urlFunctions.zUrlopenInfo(self,"http://chgis.hmdc.harvard.edu/xml/id/"+gis_id)
-            urlinfoLength=urlinfo.get('content-length')
-            if int(urlinfoLength)<500:
-                urlresponse=urlFunctions.zUrlopenRead(self,"http://chgis.hmdc.harvard.edu/xml/id/cts_"+gis_id)
-            else:
-                urlresponse=urlFunctions.zUrlopenRead(self,"http://chgis.hmdc.harvard.edu/xml/id/"+gis_id)
-            urlresponseString=urlFunctions.zUrlopenParseString(self,urlresponse)
-            baseDocElement= urlFunctions.zUrlopenDocumentElement(self,urlresponseString)
-            childnodes=urlFunctions.zUrlopenChildNodes(self,baseDocElement)
-            itemnodes=urlFunctions.zUrlopenGetElementsByTagName(self,baseDocElement,'item')
-            itemspatialnodes=None
-            
-            for i in range(0,urlFunctions.zUrlopenLength(self,itemnodes)):
-                itemnode=urlFunctions.zUrlopenGetItem(self,itemnodes,i)
-                itemspatialnodes=urlFunctions.zUrlopenGetElementsByTagName(self,itemnode,'spatial')
-            if itemspatialnodes is not None:
-                for j in range(0,urlFunctions.zUrlopenLength(self,itemspatialnodes)):
-                    coord=[]
-                    itemspatialnode= urlFunctions.zUrlopenGetItem(self,itemspatialnodes,j)
-                    itemspatiallatnodes=urlFunctions.zUrlopenGetElementsByTagName(self,itemspatialnode,'degrees_latitude')
-                    for k in range(0,urlFunctions.zUrlopenLength(self,itemspatiallatnodes)):
-                        itemspatiallatnode= urlFunctions.zUrlopenGetItem(self,itemspatiallatnodes,k)
-                        coord.append(urlFunctions.zUrlopenGetTextData(self,itemspatiallatnode))
-                itemspatiallngnodes=urlFunctions.zUrlopenGetElementsByTagName(self,itemspatialnode,'degrees_longitude')
-                for k in range(0,urlFunctions.zUrlopenLength(self,itemspatiallngnodes)):
-                    itemspatiallngnode= urlFunctions.zUrlopenGetItem(self,itemspatiallngnodes,k)
-                    coord.append(urlFunctions.zUrlopenGetTextData(self,itemspatiallngnode))
-                coordlist.append(coord)
-                gis_id= "_"+gis_id
-        return coordlist
-       
 # End for GoogleMaps creation
 
     def RESTwrite2File(self,datadir, name,text):