Hi!

I am using Shapely to determine if a point is within an area. I am doing so when storing an item to the database in a pipeline.

Thus in the constructor of the pipeline I read a kml file and then use Shapely to test if the point is within the shape.

This works perfectly and when I do so a normal command line .py file I get no debug messages. But if i start the process from within Scrapy (even with -L ERROR) I keep getting the following debug messages from Shapely:

Trying `CDLL(libgeos_c.so.1)`
Library path: 'libgeos_c.so.1'
DLL: <CDLL 'libgeos_c.so.1', handle 20528420 at 2045c2d0>

Do these messages come from Shapely? If so how can I avoid them?

cheers
roman


Code:
from xml.etree import ElementTree
import keytree
from shapely.geometry import Point, shape

class Polygon(object):
    def __init__(self, placemark):
self.name = int(placemark.find('{http://www.opengis.net/kml/2.2}name').text)
        poly = placemark.find('{http://www.opengis.net/kml/2.2}Polygon')
        self.shape = shape(keytree.geometry(poly))

    def contains(self, point):
        return self.shape.contains(point)


class MongoDBPipeline(object):

    def __init__(self):
        kmlFile = file("places.kml")
        doc = kmlFile.read()
        kmlFile.close()

        tree = ElementTree.fromstring(doc)
        kmlns = tree.tag.split('}')[0][1:]
        areas = tree.findall(".//{%s}Placemark" % kmlns)
self.polys = set(Polygon(placemark) for placemark in tree.findall(".//{%s}Placemark" % kmlns))


    def findLocation(self, point):
        p = Point(float(point[1]), float(point[0]))
        hit = -1
        for poly in self.polys:
            if poly.contains(p):
                if hit < 0 or poly.name < hit:
                    hit = poly.name
        return hit

_______________________________________________
Community mailing list
Community@lists.gispython.org
http://lists.gispython.org/mailman/listinfo/community

Reply via email to