Thanks for the quick response!
From: Mike Stupalov <mike@observium.org>
Sent: Monday, March 17, 2025 8:47 AM
To: Observium <observium@lists.observium.org>; Stephen Kent via observium <observium@lists.observium.org>
Cc: Stephen Kent <skent@signaturescience.com>
Subject: Re: [Observium] Incorrect data in ArcGIS geocoding
You don't often get email from
mike@observium.org.
Learn why this is important |
[EXTERNAL EMAIL]
Hi,
should be fixed in r13953 (rolling updates).
$ ./test_geo.php -a arcgis '1313 disneyland dr anaheim, ca'
+--------------------------------+
| Location |
+--------------------------------+
| 1313 disneyland dr anaheim, ca |
+--------------------------------+
+----------+------------+--------------+---------------+------------+--------+---------+-------+
| Geo: API | Lat | Lon | Country | State | County | City | Error |
+----------+------------+--------------+---------------+------------+--------+---------+-------+
| arcgis | 33.8144249 | -117.9249177 | United States | California | Orange | Anaheim | |
+----------+------------+--------------+---------------+------------+--------+---------+-------+
Stephen Kent via observium wrote on 17.03.2025 13:52:
I noticed when adding geolocation info to devices, I would consistently get incorrect data regardless of address format for ArcGIS in Observium and when using the test_geo.php script. Specifically, the United States address’s “State”.
My preferred format is the NeDi hierarchical format (US;CA;Anaheim,1234 Main Street;2nd Floor;Server Room). Even using a typical format, info is incorrect. (1234 Main Street, Anaheim,CA)
I suspect ArcGIS is returning the correct info, but the php is stuffing the data in the wrong fields. I don’t know php enough to confirm.
So below is a query using typical US address format.
/opt/observium# ./test_geo.php -a arcgis '1313 disneyland dr anaheim, ca'
+--------------------------------+
| Location |
+--------------------------------+
| 1313 disneyland dr anaheim, ca |
+--------------------------------+
+----------+------------+--------------+---------------+------------+--------+---------+-------+
| Geo: API | Lat | Lon | Country | State | County | City | Error |
+----------+------------+--------------+---------------+------------+--------+---------+-------+
| arcgis | 33.8144249 | -117.9249177 | United States | Disneyland | Orange | Anaheim | |
+----------+------------+--------------+---------------+------------+--------+---------+-------+
And in NeDi format:
/opt/observium# ./test_geo.php -a arcgis 'US;CA;1313 Disneyland Drive;Building 1'
+----------------------------------------+
| Location |
+----------------------------------------+
| US;CA;1313 Disneyland Drive;Building 1 |
+----------------------------------------+
+----------+------------+--------------+---------------+------------+--------+---------+-------+
| Geo: API | Lat | Lon | Country | State | County | City | Error |
+----------+------------+--------------+---------------+------------+--------+---------+-------+
| arcgis | 33.8144249 | -117.9249177 | United States | Disneyland | Orange | Anaheim | |
+----------+------------+--------------+---------------+------------+--------+---------+-------+
All fields other then “State” is correct.
When you run the test-geo.php in debug, we get a lot of info, but I want to point out this section:
I think this is the json formatted return from ArcGIS. All this data looks correct. In particular, notice the field descriptor “StName” with value “Disneyland”.
I think this is where to disconnect occurs. I think there was a misunderstanding that “StName” was the “State” value, while it is actually returned in “Region” (California)
I think “StName” is the street name (Disneyland).
So the solution would be for the php to stuff the “State” field with the value from “Region”. Not sure what Observium is doing with Street name.
/opt/observium# ./test_geo.php -dd -a arcgis '1313 disneyland dr anaheim, ca'
DEBUG!
Load class 'Console_Color2' from '/opt/observium/libs/pear/Console/Color2.php': OK
DEBUG: is_cli() == TRUE, PHP_SAPI: 'cli', REMOTE_ADDR: ''DEFINITIONS Time : 0.0343442 ms
REQUEST STATUS[TRUE]
REQUEST RUNTIME[0.4547s]
RESPONSE CODE[200 OK]
RESPONSE[
{"spatialReference":{"wkid":4326,"latestWkid":4326},"candidates":[{"address":"1313 S Disneyland Dr, Anaheim, California, 92802","location":{"x":-117.924917739781,"y":33.814424874175},"score":99.5,"attributes":{"Score":99.5,"Type":"","PlaceName":"","StName":"Disneyland","City":"Anaheim","Subregion":"Orange County","Region":"California","Territory":"","Country":"USA"},"extent":{"xmin":-117.925917739781,"ymin":33.813424874175,"xmax":-117.923917739781,"ymax":33.815424874175}}]}
]
> $http_response_header /opt/observium/includes/http.inc.php:195
null
TRUE
Response [4326] valid: [spatialReference->wkid] regex [^\d+$]
/opt/observium/includes/http.inc.php:691
array(
[spatialReference] => array(
[wkid] => int(4326)
[latestWkid] => int(4326)
)
[candidates] => array(
[0] => array(
[address] => string(48) "1313 S Disneyland Dr, Anaheim, California, 92802"
[location] => array(
[x] => double(-117.92491773978)
[y] => double(33.814424874175)
)
[score] => double(99.5)
[attributes] => array(
[Score] => double(99.5)
[Type] => string(0) ""
[PlaceName] => string(0) ""
[StName] => string(10) "Disneyland"
[City] => string(7) "Anaheim"
[Subregion] => string(13) "Orange County"
[Region] => string(10) "California"
[Territory] => string(0) ""
[Country] => string(3) "USA"
)
[extent] => array(
[xmin] => double(-117.92591773978)
[ymin] => double(33.813424874175)
[xmax] => double(-117.92391773978)
[ymax] => double(33.815424874175)
)
)
)
)
…
> $location /opt/observium/test_geo.php:88
array(
[location] => string(30) "1313 disneyland dr anaheim, ca"
[location_geoapi] => string(6) "arcgis"
[location_lat] => double(33.8144249)
[location_lon] => double(-117.9249177)
[location_city] => string(7) "Anaheim"
[location_county] => string(6) "Orange"
[location_state] => string(10) "Disneyland"
[location_country] => string(13) "United States"
[location_status] => string(315) "Geocoding ENABLED, try detect device coordinates:
by FORWARD query (API: ARCGIS, sysLocation: 1313 disneyland dr anaheim, ca) - FOUND
GEO API REQUEST:
GEO LOCATION: United States (Country), Disneyland (State), Orange (County), Anaheim (City)
GEO COORDINATES: 33.8144249 (Latitude), -117.9249177 (Longitude)"
)
+----------+------------+--------------+---------------+------------+--------+---------+-------+
| Geo: API | Lat | Lon | Country | State | County | City | Error |
+----------+------------+--------------+---------------+------------+--------+---------+-------+
| arcgis | 33.8144249 | -117.9249177 | United States | Disneyland | Orange | Anaheim | |
+----------+------------+--------------+---------------+------------+--------+---------+-------+
Observium CE 24.12.13800 (24th December 2024)
OS Linux 5.15.0-131-generic [amd64] (Ubuntu 22.04)
Apache 2.4.52 (Ubuntu)
PHP 8.1.2-1ubuntu2.20 (OPcache: ENABLED) (Memory: 128MB)
Python 3.10.12
MySQL 8.0.41-0ubuntu0.22.04.1 (extension: mysqli 8.1.2-1ubuntu2.20)
SNMP NET-SNMP 5.9.1
RRDtool 1.7.2
Fping 5.1 (IPv4 and IPv6)
Fetch cURL 7.81.0 (OpenSSL/3.0.2, LibZ 1.2.11, LibIDN 2.3.2)
_______________________________________________observium mailing list -- observium@lists.observium.orgTo unsubscribe send an email to observium-leave@lists.observium.org
--
Mike Stupalov,
Discord channel: https://discord.gg/GjpNXKWm8W
Observium Limited, https://observium.org