SOAP-сервис геокодирования

0 голосов
спросил 07 Авг, 12 от ziggazagga (980 баллов) в категории Программные продукты Esri
    Всем привет!

Столкнулся с такой проблемой. При запросах прямого геокодирования сервис работает. При обратном гекодировании ругается.
Не смог найти нигде примера тела XML-запроса, поэтому действовал наугад. Пример запроса:
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns="http://www.esri.com/schemas/ArcGIS/10.0">
   <soapenv:Header/>
   <soapenv:Body>
      <ns:ReverseGeocode>
        <Location/><X>37.565</X><Y>55.795</Y></Location>
        <ReturnIntersection>False</ReturnIntersection>
        <PropMods>
            <PropertyArray>
               <PropertySetProperty>
                  <Key>ReverseDistanceUnits</Key>
                  <Value>Meters</Value>
               </PropertySetProperty>
               <PropertySetProperty>
                  <Key>ReverseDistance</Key>
                  <Value>200</Value>
               </PropertySetProperty>
            </PropertyArray>
        </PropMods>
      </ns:ReverseGeocode>
   </soapenv:Body>
</soapenv:Envelope>

Ошибка:
   <span><H1>Server Error in '/ArcGIS/Services' Application.<hr width=100% size=1 color=silver></H1>
            <h2> <i>Exception from HRESULT: 0xC00CEE3B</i> </h2></span>
            <font face="Arial, Helvetica, Geneva, SunSans-Regular, sans-serif ">
            <b> Description: </b>An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.
            <br><br>
            <b> Exception Details: </b>System.Web.HttpException: Exception from HRESULT: 0xC00CEE3B<br><br>

Если в описании Location убрать </Location>, то ошибки не возникает, но результат всегда нулевой приходит. При этом в логах:
<Msg time='2012-08-07T09:05:05' type='INFO1' code='70024' target='locator.GeocodeServer' methodName='GeocodeServer.ReverseGeocode' machine='GISNIPSRV-01' process='3896' thread='2016'>Reverse geocoding location: IPoint(1,#QNAN0, 1,#QNAN0)</Msg>
<Msg time='2012-08-07T09:05:05' type='INFO3' code='70024' target='locator.GeocodeServer' methodName='GeocodeServer.ReverseGeocode' machine='GISNIPSRV-01' process='3896' thread='2016'>Reverse geocoding result: ; PropMods: ReverseDistanceUnits='Meters' ReverseDistance='200'</Msg>
<Msg time='2012-08-07T09:05:05' type='INFO2' code='100002' target='locator.GeocodeServer' methodName='GeocodeServer.ReverseGeocode' machine='GISNIPSRV-01' process='3896' thread='2016' elapsed='0.00262'>String request succesfully processed. Response size is 388 characters.</Msg>
Видимо, второй вариант запроса верный, но непонятно почему координаты передаются некорректно.
SOAP-сервис прямого геокодирования работает, равно как и по REST работает и прямое и обратное геокодирование.
Кто-то сталкивался с подобной проблемой?

2 Ответы

0 голосов
ответил 07 Авг, 12 от Grigoriy (127,020 баллов)
Система координат у сервиса какая?
А то Вы в запросе вставляете координаты точки в градусах, а дистанцию поиска - метрах.
0 голосов
ответил 07 Авг, 12 от ziggazagga (980 баллов)
СК - WGS 84. WKID 4326. Соотвественно, единицы измерения - градусы.
Честно говоря, нигде инструкций не видел, что search distance units должны соответствовать единицам измерения СК. Это так?
Попробовал с decimal_degrees - тот же результат.
Добро пожаловать на сайт Вопросов и Ответов, где вы можете задавать вопросы по GIS тематике и получать ответы от других членов сообщества.
...