Ejemplo n.º 1
0
 def _parse_result(self, place):
     location = util.get_first_text(place, ['address', 'name']) or None
     points = place.getElementsByTagName('Point')
     point = points and points[0] or None
     coords = util.get_first_text(point, 'coordinates') or None
     if coords:
         longitude, latitude = [float(f) for f in coords.split(',')[:2]]
     else:
         latitude = longitude = None
     return (location, (latitude, longitude))
Ejemplo n.º 2
0
 def parse_place(place):
     location = util.get_first_text(place, ["address", "name"]) or None
     points = place.getElementsByTagName("Point")
     point = points and points[0] or None
     coords = util.get_first_text(point, "coordinates") or None
     if coords:
         longitude, latitude = [float(f) for f in coords.split(",")[:2]]
     else:
         latitude = longitude = None
         _, (latitude, longitude) = self.geocode(location)
     return (location, (latitude, longitude))
Ejemplo n.º 3
0
 def parse_place(place):
     location = util.get_first_text(place, ['address', 'name']) or None
     points = place.getElementsByTagName('Point')
     point = points and points[0] or None
     coords = util.get_first_text(point, 'coordinates') or None
     if coords:
         longitude, latitude = [float(f) for f in coords.split(',')[:2]]
     else:
         latitude = longitude = None
         _, (latitude, longitude) = self.geocode(location)
     return (location, (latitude, longitude))
Ejemplo n.º 4
0
Archivo: geonames.py Proyecto: dpla/zen
 def parse_code(code):
     place_name = util.get_first_text(code, 'name')
     country_code = util.get_first_text(code, 'countryCode')
     postal_code = util.get_first_text(code, 'postalcode')
     place = util.join_filter(", ", [place_name, country_code])
     location = util.join_filter(" ", [place, postal_code]) or None
     latitude = util.get_first_text(code, 'lat') or None
     longitude = util.get_first_text(code, 'lng') or None
     latitude = latitude and float(latitude)
     longitude = longitude and float(longitude)
     return (location, (latitude, longitude))
Ejemplo n.º 5
0
 def parse_place(place):
     location = util.get_first_text(place, ['name', 'formatted_address']) or None
     points = place.getElementsByTagName('geometry')
     point = points and points[0] or None
     coords = util.get_first_text(point, 'location') or None
     if coords:
         latitude = util.get_first_text(coords, 'lat')
         longitude = util.get_first_text(coords, 'lng')
     else:
         latitude = longitude = None
         _, (latitude, longitude) = self.geocode(location)
     return (location, (latitude, longitude))
Ejemplo n.º 6
0
    def parse_xml(self, page, exactly_one=True):
        """Parse a location name, latitude, and longitude from an XML response.
        """
        if not isinstance(page, basestring):
            page = util.decode_page(page)
        try:
            doc = xml.dom.minidom.parseString(page)
        except ExpatError:
            places = []
            doc = None
        else:
            places = doc.getElementsByTagName('Placemark')

        if len(places) == 0 and doc is not None:
            # Got empty result. Parse out the status code and raise an error if necessary.
            status = doc.getElementsByTagName("Status")
            status_code = int(util.get_first_text(status[0], 'code'))
            self.check_status_code(status_code)
        
        if exactly_one and len(places) != 1:
            raise ValueError("Didn't find exactly one result! " \
                             "(Found %d.)" % len(places))

        if exactly_one:
            return self._parse_result(places[0])
        else:
            return [self._parse_result(place) for place in places]
Ejemplo n.º 7
0
 def parse_place(place, return_accuracy=False):
     location = util.get_first_text(place, ['address', 'name']) or None
     addressdetails = place.getElementsByTagName("AddressDetails")[0]
     accuracy = addressdetails.attributes['Accuracy'].value
     points = place.getElementsByTagName('Point')
     point = points and points[0] or None
     coords = util.get_first_text(point, 'coordinates') or None
     if coords:
         longitude, latitude = [float(f) for f in coords.split(',')[:2]]
     else:
         latitude = longitude = None
         _, (latitude, longitude) = self.geocode(location)
     if return_accuracy:
         return (location, (latitude, longitude), accuracy)
     else:
         return (location, (latitude, longitude))
Ejemplo n.º 8
0
 def parse_result(result):
     strip = ", \n"
     address = util.get_first_text(result, 'Address', strip)
     city = util.get_first_text(result, 'City', strip)
     state = util.get_first_text(result, 'State', strip)
     zip = util.get_first_text(result, 'Zip', strip)
     country = util.get_first_text(result, 'Country', strip)
     city_state = util.join_filter(", ", [city, state])
     place = util.join_filter(" ", [city_state, zip])
     location = util.join_filter(", ", [address, place, country])
     latitude = float(util.get_first_text(result, 'Latitude')) or None
     longitude = float(util.get_first_text(result, 'Longitude')) or None
     
     # TODO use Point/Location object API in 0.95
     #if latitude and longitude:
     #    point = Point(latitude, longitude)
     #else:
     #    point = Non
     #return Location(location, point, {
     #    'Address': address,
     #    'City': city,
     #    'State': state,
     #    'Zip': zip,
     #    'Country': country
     #})
     
     return address, (latitude, longitude)
Ejemplo n.º 9
0
        def parse_result(result):
            strip = ", \n"
            address = util.get_first_text(result, 'Address', strip)
            city = util.get_first_text(result, 'City', strip)
            state = util.get_first_text(result, 'State', strip)
            zip = util.get_first_text(result, 'Zip', strip)
            country = util.get_first_text(result, 'Country', strip)
            city_state = util.join_filter(", ", [city, state])
            place = util.join_filter(" ", [city_state, zip])
            location = util.join_filter(", ", [address, place, country])
            latitude = float(util.get_first_text(result, 'Latitude')) or None
            longitude = float(util.get_first_text(result, 'Longitude')) or None

            # TODO use Point/Location object API in 0.95
            #if latitude and longitude:
            #    point = Point(latitude, longitude)
            #else:
            #    point = Non
            #return Location(location, point, {
            #    'Address': address,
            #    'City': city,
            #    'State': state,
            #    'Zip': zip,
            #    'Country': country
            #})

            return address, (latitude, longitude)
Ejemplo n.º 10
0
 def parse_result(result):
     strip = ", \n"
     line1= util.get_first_text(result, 'line1', strip)
     line2 = util.get_first_text(result, 'line2', strip)
     line3 = util.get_first_text(result, 'line3', strip)
     line4 = util.get_first_text(result, 'line4', strip)
     address = util.join_filter(", ", [line1, line2, line3, line4])
     city = util.get_first_text(result, 'city', strip)
     state = util.get_first_text(result, 'state', strip)
     zip = util.get_first_text(result, 'uzip', strip)
     country = util.get_first_text(result, 'country', strip)
     city_state = util.join_filter(", ", [city, state])
     place = util.join_filter(" ", [city_state, zip])
     location = util.join_filter(", ", [address, place, country])
     latitude = util.get_first_text(result, 'latitude') or None
     longitude = util.get_first_text(result, 'longitude') or None
     if latitude and longitude:
         point = Point(latitude, longitude)
     else:
         point = None
     return (location, (latitude, longitude))
Ejemplo n.º 11
0
    def parse_xml(self, page, exactly_one=True, return_accuracy=False):
        """Parse a location name, latitude, and longitude from an XML response.
        """
        if not isinstance(page, basestring):
            page = util.decode_page(page)
        try:
            doc = xml.dom.minidom.parseString(page)
        except ExpatError:
            places = []
        else:
            places = doc.getElementsByTagName('Placemark')

        if len(places) == 0:
            # Got empty result. Parse out the status code and raise an error if necessary.
            status = doc.getElementsByTagName("Status")
            status_code = int(util.get_first_text(status[0], 'code'))
            self.check_status_code(status_code)
        
        if exactly_one and len(places) != 1:
            raise ValueError("Didn't find exactly one placemark! " \
                             "(Found %d.)" % len(places))
        
        def parse_place(place, return_accuracy=False):
            location = util.get_first_text(place, ['address', 'name']) or None
            addressdetails = place.getElementsByTagName("AddressDetails")[0]
            accuracy = addressdetails.attributes['Accuracy'].value
            points = place.getElementsByTagName('Point')
            point = points and points[0] or None
            coords = util.get_first_text(point, 'coordinates') or None
            if coords:
                longitude, latitude = [float(f) for f in coords.split(',')[:2]]
            else:
                latitude = longitude = None
                _, (latitude, longitude) = self.geocode(location)
            if return_accuracy:
                return (location, (latitude, longitude), accuracy)
            else:
                return (location, (latitude, longitude))

        if exactly_one:
            return parse_place(places[0], return_accuracy)
        else:
            return (parse_place(place, return_accuracy) for place in places)
Ejemplo n.º 12
0
    def parse_xml(self, page, exactly_one=True):
        """Parse a location name, latitude, and longitude from an XML response.
        """
        if not isinstance(page, basestring):
            page = util.decode_page(page)
        try:
            doc = xml.dom.minidom.parseString(page)
        except ExpatError:
            places = []
            doc = None
        else:
            places = doc.getElementsByTagName('results')

        if len(places) == 0 and doc is not None:
            # Got empty result. Parse out the status code and raise an error if necessary.
            status = doc.getElementsByTagName("results")
            status_code = int(util.get_first_text(status, 'status'))
            self.check_status_code(status_code)
        
        if exactly_one and len(places) != 1:
            raise ValueError("Didn't find exactly one placemark! " \
                             "(Found %d.)" % len(places))
        
        def parse_place(place):
            location = util.get_first_text(place, ['name', 'formatted_address']) or None
            points = place.getElementsByTagName('geometry')
            point = points and points[0] or None
            coords = util.get_first_text(point, 'location') or None
            if coords:
                latitude = util.get_first_text(coords, 'lat')
                longitude = util.get_first_text(coords, 'lng')
            else:
                latitude = longitude = None
                _, (latitude, longitude) = self.geocode(location)
            return (location, (latitude, longitude))
        
        if exactly_one:
            return parse_place(places[0])
        else:
            return [parse_place(place) for place in places]
Ejemplo n.º 13
0
    def parse_xml(self, page, exactly_one=True, reverse=False):
        """Parse a location name, latitude, and longitude from an XML response.
        """
        if not isinstance(page, basestring):
            page = util.decode_page(page)
        try:
            doc = xml.dom.minidom.parseString(page)
        except ExpatError:
            places = []
            doc = None
        else:
            places = doc.getElementsByTagName('Placemark')

        if len(places) == 0 and doc is not None:
            # Got empty result. Parse out the status code and raise an error if necessary.
            status = doc.getElementsByTagName("Status")
            status_code = int(util.get_first_text(status[0], 'code'))
            self.check_status_code(status_code)

        if (exactly_one and len(places) != 1) and (not reverse):
            raise ValueError("Didn't find exactly one placemark! " \
               "(Found %d.)" % len(places))

        def parse_place(place):
            location = util.get_first_text(place, ['address', 'name']) or None
            points = place.getElementsByTagName('Point')
            point = points and points[0] or None
            coords = util.get_first_text(point, 'coordinates') or None
            if coords:
                longitude, latitude = [float(f) for f in coords.split(',')[:2]]
            else:
                latitude = longitude = None
                _, (latitude, longitude) = self.geocode(location)
            return (location, (latitude, longitude))

        if exactly_one:
            return parse_place(places[0])
        else:
            return [parse_place(place) for place in places]
Ejemplo n.º 14
0
    def parse_xml(self, page, exactly_one=True):
        """Parse a location name, latitude, and longitude from an XML response.
        """
        if not isinstance(page, basestring):
            page = util.decode_page(page)
        try:
            doc = xml.dom.minidom.parseString(page)
        except ExpatError:
            places = []
            doc = None
        else:
            places = doc.getElementsByTagName("Placemark")

        if len(places) == 0 and doc is not None:
            # Got empty result. Parse out the status code and raise an error if necessary.
            status = doc.getElementsByTagName("Status")
            status_code = int(util.get_first_text(status[0], "code"))
            self.check_status_code(status_code)

        if exactly_one and len(places) != 1:
            raise ValueError("Didn't find exactly one placemark! " "(Found %d.)" % len(places))

        def parse_place(place):
            location = util.get_first_text(place, ["address", "name"]) or None
            points = place.getElementsByTagName("Point")
            point = points and points[0] or None
            coords = util.get_first_text(point, "coordinates") or None
            if coords:
                longitude, latitude = [float(f) for f in coords.split(",")[:2]]
            else:
                latitude = longitude = None
                _, (latitude, longitude) = self.geocode(location)
            return (location, (latitude, longitude))

        if exactly_one:
            return parse_place(places[0])
        else:
            return (parse_place(place) for place in places)
Ejemplo n.º 15
0
 def parse_result(result):
     strip = ", \n"
     address = util.get_first_text(result, 'Address', strip)
     city = util.get_first_text(result, 'City', strip)
     state = util.get_first_text(result, 'State', strip)
     zip = util.get_first_text(result, 'Zip', strip)
     country = util.get_first_text(result, 'Country', strip)
     city_state = util.join_filter(", ", [city, state])
     place = util.join_filter(" ", [city_state, zip])
     location = util.join_filter(", ", [address, place, country])
     latitude = util.get_first_text(result, 'Latitude') or None
     longitude = util.get_first_text(result, 'Longitude') or None
     if latitude and longitude:
         point = Point(latitude, longitude)
     else:
         point = Non
     return Location(location, point, {
         'Address': address,
         'City': city,
         'State': state,
         'Zip': zip,
         'Country': country
     })
Ejemplo n.º 16
0
Archivo: yahoo.py Proyecto: dpla/zen
 def parse_result(result):
     strip = ", \n"
     address = util.get_first_text(result, 'Address', strip)
     city = util.get_first_text(result, 'City', strip)
     state = util.get_first_text(result, 'State', strip)
     zip = util.get_first_text(result, 'Zip', strip)
     country = util.get_first_text(result, 'Country', strip)
     city_state = util.join_filter(", ", [city, state])
     place = util.join_filter(" ", [city_state, zip])
     location = util.join_filter(", ", [address, place, country])
     latitude = util.get_first_text(result, 'Latitude') or None
     longitude = util.get_first_text(result, 'Longitude') or None
     if latitude and longitude:
         point = Point(latitude, longitude)
     else:
         point = Non
     return Location(location, point, {
         'Address': address,
         'City': city,
         'State': state,
         'Zip': zip,
         'Country': country
     })
Ejemplo n.º 17
0
 def get_thing_label(self, thing):
     return util.get_first_text(thing, 'rdfs:label')
Ejemplo n.º 18
0
 def get_thing_label(self, thing):
     return util.get_first_text(thing, 'rdfs:label')