3 * Convert a ArcGis web recordset polygon to a geojson polygon feature.
5 * Validate the generated JSON with http://geojsonlint.com/
7 * Dependency installation:
8 * $ composer require php-coord/php-coord
10 * @author Christan Weiske <cweiske@cweiske.de>
12 require_once __DIR__ . '/vendor/autoload.php';
21 err("convert.php <esriGeoMetryFile.json>");
25 $data = json_decode(file_get_contents($file));
27 if (!isset($data->RecordSet->geometryType)
28 || $data->RecordSet->geometryType != 'esriGeometryPolygon'
30 err('No esriGeometryPolygon');
36 $sRef = $data->RecordSet->spatialReference->wkid;
37 if (!isset($sRefs[$sRef])) {
38 err('Unknown spatial reference EPSG ' . $sRef);
40 list($latZone, $lngZone) = $sRefs[$sRef];
44 'title' => basename($file, '.json'),
51 foreach ($data->RecordSet->features as $feature) {
52 foreach ($feature->geometry->rings as $ring) {
54 foreach ($ring as $point) {
55 $utm = new \PHPCoord\UTMRef(
56 $point[0], $point[1], 0, $latZone, $lngZone
58 $ll = $utm->toLatLng();
59 $coords[] = [$ll->getLng(), $ll->getLat()];
62 $geoJson['geometry']['coordinates'][] = $coords;
66 echo json_encode($geoJson, JSON_PRETTY_PRINT) . "\n";
69 $UTMRef = new \PHPCoord\UTMRef(350531.8, 5689109.2, 0, 'N', 33);
70 $LatLng = $UTMRef->toLatLng();
72 echo (string) $UTMRef . "\n";
73 echo (string) $LatLng . "\n";