Клуб API Карт

Обратное геокодирование, что считать результатом?

Andrey.Cjkjvfnby
21 сентября 2010, 09:35

Делаю запрос http геокодером:

http://geocode-maps.yandex.ru/1.x/?geocode=30.3162,59.938905&results=1&key=.................

Мне кажется , что результат это "featureMember", но их четыре?

<?xml version="1.0" encoding="utf-8"?>
<ymaps xmlns="http://maps.yandex.ru/ymaps/1.x" xmlns:x="http://www.yandex.ru/xscript">
  <GeoObjectCollection>
    <metaDataProperty xmlns="http://www.opengis.net/gml">
      <GeocoderResponseMetaData xmlns="http://maps.yandex.ru/geocoder/1.x">
        <request>30.3162,59.938905</request>
        <found>4</found>
        <results>1</results>
      </GeocoderResponseMetaData>
    </metaDataProperty>
    <featureMember xmlns="http://www.opengis.net/gml">
      <GeoObject xmlns="http://maps.yandex.ru/ymaps/1.x">
        <metaDataProperty xmlns="http://www.opengis.net/gml">
          <GeocoderMetaData xmlns="http://maps.yandex.ru/geocoder/1.x">
            <kind>house</kind>
            <text>Россия, Санкт-Петербург, Центральный район, Дворцовая площадь, 6</text>
            <precision>near</precision>
            <AddressDetails xmlns="urn:oasis:names:tc:ciq:xsdschema:xAL:2.0">
              <Country>
                <CountryName>Россия</CountryName>
                <Locality>
                  <LocalityName>Санкт-Петербург</LocalityName>
                  <DependentLocality>
                    <DependentLocalityName>Центральный район</DependentLocalityName>
                    <Thoroughfare>
                      <ThoroughfareName>Дворцовая площадь</ThoroughfareName>
                      <Premise>
                        <PremiseNumber>6</PremiseNumber>
                      </Premise>
                    </Thoroughfare>
                  </DependentLocality>
                </Locality>
              </Country>
            </AddressDetails>
          </GeocoderMetaData>
        </metaDataProperty>
        <boundedBy xmlns="http://www.opengis.net/gml">
          <Envelope>
            <lowerCorner>30.314000 59.936999</lowerCorner>
            <upperCorner>30.322210 59.941119</upperCorner>
          </Envelope>
        </boundedBy>
        <Point xmlns="http://www.opengis.net/gml">
          <pos>30.318105 59.939059</pos>
        </Point>
      </GeoObject>
    </featureMember>
    <featureMember xmlns="http://www.opengis.net/gml">
      <GeoObject xmlns="http://maps.yandex.ru/ymaps/1.x">
        <metaDataProperty xmlns="http://www.opengis.net/gml">
          <GeocoderMetaData xmlns="http://maps.yandex.ru/geocoder/1.x">
            <kind>street</kind>
            <text>Россия, Санкт-Петербург, Центральный район, Дворцовая площадь</text>
            <precision>street</precision>
            <AddressDetails xmlns="urn:oasis:names:tc:ciq:xsdschema:xAL:2.0">
              <Country>
                <CountryName>Россия</CountryName>
                <Locality>
                  <LocalityName>Санкт-Петербург</LocalityName>
                  <DependentLocality>
                    <DependentLocalityName>Центральный район</DependentLocalityName>
                    <Thoroughfare>
                      <ThoroughfareName>Дворцовая площадь</ThoroughfareName>
                    </Thoroughfare>
                  </DependentLocality>
                </Locality>
              </Country>
            </AddressDetails>
          </GeocoderMetaData>
        </metaDataProperty>
        <boundedBy xmlns="http://www.opengis.net/gml">
          <Envelope>
            <lowerCorner>30.297030 59.930268</lowerCorner>
            <upperCorner>30.329963 59.946793</upperCorner>
          </Envelope>
        </boundedBy>
        <Point xmlns="http://www.opengis.net/gml">
          <pos>30.313497 59.938531</pos>
        </Point>
      </GeoObject>
    </featureMember>
    <featureMember xmlns="http://www.opengis.net/gml">
      <GeoObject xmlns="http://maps.yandex.ru/ymaps/1.x">
        <metaDataProperty xmlns="http://www.opengis.net/gml">
          <GeocoderMetaData xmlns="http://maps.yandex.ru/geocoder/1.x">
            <kind>district</kind>
            <text>Россия, Санкт-Петербург, Центральный район</text>
            <precision>other</precision>
            <AddressDetails xmlns="urn:oasis:names:tc:ciq:xsdschema:xAL:2.0">
              <Country>
                <CountryName>Россия</CountryName>
                <Locality>
                  <LocalityName>Санкт-Петербург</LocalityName>
                  <DependentLocality>
                    <DependentLocalityName>Центральный район</DependentLocalityName>
                  </DependentLocality>
                </Locality>
              </Country>
            </AddressDetails>
          </GeocoderMetaData>
        </metaDataProperty>
        <boundedBy xmlns="http://www.opengis.net/gml">
          <Envelope>
            <lowerCorner>30.308098 59.913929</lowerCorner>
            <upperCorner>30.403086 59.958034</upperCorner>
          </Envelope>
        </boundedBy>
        <Point xmlns="http://www.opengis.net/gml">
          <pos>30.355592 59.935989</pos>
        </Point>
      </GeoObject>
    </featureMember>
    <featureMember xmlns="http://www.opengis.net/gml">
      <GeoObject xmlns="http://maps.yandex.ru/ymaps/1.x">
        <metaDataProperty xmlns="http://www.opengis.net/gml">
          <GeocoderMetaData xmlns="http://maps.yandex.ru/geocoder/1.x">
            <kind>locality</kind>
            <text>Россия, Санкт-Петербург</text>
            <precision>other</precision>
            <AddressDetails xmlns="urn:oasis:names:tc:ciq:xsdschema:xAL:2.0">
              <Country>
                <CountryName>Россия</CountryName>
                <Locality>
                  <LocalityName>Санкт-Петербург</LocalityName>
                </Locality>
              </Country>
            </AddressDetails>
          </GeocoderMetaData>
        </metaDataProperty>
        <boundedBy xmlns="http://www.opengis.net/gml">
          <Envelope>
            <lowerCorner>29.628792 59.622196</lowerCorner>
            <upperCorner>30.998201 60.251868</upperCorner>
          </Envelope>
        </boundedBy>
        <Point xmlns="http://www.opengis.net/gml">
          <pos>30.313497 59.938531</pos>
        </Point>
      </GeoObject>
    </featureMember>
  </GeoObjectCollection>
</ymaps>
5 комментариев
Подписаться на комментарии к посту
Результат — GeoObject. Результата четыре, т. к. на разных масштабах человек ожидает объекты разного размера.
Должен ли работать параметр results при обратном геокодировании?

Поправьте пожалуйста документацию:
http://api.yandex.ru/maps/geocoder/doc/desc/concepts/reverse_geocode.xml



Для повышения релевантности поиска геокодируемых объектов, по возможности ограничивайте область поиска с помощью параметров ll, spn и rspn, см. Параметры геокодера.

Какие параметры геокодера обрабатываются при обратном геокодировании?

Я правильно понимаю, что угол Невского и Садовой,(30.335169,59.934237) мне всегда даст адрес Невский проспект?


Обрабатываются все параметры, что и для обычного геокодирования.
То, что параметр results не учитывается, мы знаем. Чиним)

По поводу угла. При щелчке на перекрестке ищется наиболее ближайщий объект и сейчас мы считаем. что это Невский проспект, 52, а если взять улицу, то Невский проспект.

Если какой-то результат поиска вам кажется некорректным, то вы можете пожаловаться через спец. формочку (ну думаю, что вы об этом и так давно знаете =)


Если какой-то результат поиска вам кажется некорректным,...

В варианте с геокодером, мне не совсем подходит ближайшее попадание. Мне нужны обе улицы на перекрестке.  :)

Хотя это решается 2мя запросами в соседнии точки.





 
При обратном геокодировании учитывается много разных параметров: размер объекта, расстояние до точки "тыка", приоритет по kind, количество домов на улице (или улиц в районе).
Соответственно в вашем случае лучше всего подошел Невский проспект, поэтому он и выведен в качестве результата.