Incorrect data in ArcGIS geocoding

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 formathttps://www.nedi.ch/documentation/index.html (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[https://geocode.arcgis.com/arcgis/rest/services/World/GeocodeServer/findAddr...] 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)

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 https://www.nedi.ch/documentation/index.html (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[https://geocode.arcgis.com/arcgis/rest/services/World/GeocodeServer/findAddr...]
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.org To unsubscribe send an email to observium-leave@lists.observium.org

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.orgmailto:mike@observium.org. Learn why this is importanthttps://aka.ms/LearnAboutSenderIdentification [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 formathttps://www.nedi.ch/documentation/index.html (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[https://geocode.arcgis.com/arcgis/rest/services/World/GeocodeServer/findAddr...] 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.orgmailto:observium@lists.observium.org
To unsubscribe send an email to observium-leave@lists.observium.orgmailto:observium-leave@lists.observium.org
-- Mike Stupalov, Discord channel: https://discord.gg/GjpNXKWm8W Observium Limited, https://observium.orghttps://observium.org/

Howdy guys,
Curious if there has been any implementation of polling of the CISCO-WAN-3G-MIB.. Apparently Cisco is also using that for the 4G/LTE modules, not sure about the 5G modules yet. I've got some LTE routers deployed and monitored, but do not see any of the data from that MIB.
Let me know if you need a walk of a router with that information.
Regards,
Ron
participants (3)
-
Mike Stupalov
-
Ron Marosko
-
Stephen Kent