public function testInlineProjectionMethod1() { $proj4 = new Proj4php(); $proj4->addDef("EPSG:27700", '+proj=tmerc +lat_0=49 +lon_0=-2 +k=0.9996012717 +x_0=400000 +y_0=-100000 +ellps=airy +datum=OSGB36 +units=m +no_defs'); $projWGS84 = new Proj('EPSG:4326', $proj4); $projOSGB36 = new Proj('EPSG:27700', $proj4); $pointSrc = new Point(671196.3657, 1230275.0454, $projOSGB36); $pointDest = $proj4->transform($projWGS84, $pointSrc); $this->assertEquals(2.9964931538756, $pointDest->x, '', 0.1); $this->assertEquals(60.863435314163, $pointDest->y, '', 0.1); $pointSrc = $pointDest; $pointDest = $proj4->transform($projOSGB36, $pointSrc); $this->assertEquals(671196.3657, $pointDest->x, '', 20); $this->assertEquals(1230275.0454, $pointDest->y, '', 20); }
public function testInlineProjectionMethod1() { $proj4 = new Proj4php(); $proj4->addDef("EPSG:27700", '+proj=tmerc +lat_0=49 +lon_0=-2 +k=0.9996012717 +x_0=400000 +y_0=-100000 +ellps=airy +datum=OSGB36 +units=m +no_defs'); $proj4->addDef("EPSG:31370", "+proj=lcc +lat_1=51.16666723333333 +lat_2=49.8333339 +lat_0=90 +lon_0=4.367486666666666 +x_0=150000.013 +y_0=5400088.438 +ellps=intl +towgs84=106.869,-52.2978,103.724,-0.33657,0.456955,-1.84218,1 +units=m +no_defs"); $proj4->addDef("EPSG:32040", '+proj=lcc +lat_1=28.38333333333333 +lat_2=30.28333333333333 +lat_0=27.83333333333333 +lon_0=-99 +x_0=609601.2192024384 +y_0=0 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096012192 +no_defs '); $projWGS84 = new Proj('EPSG:4326', $proj4); $projOSGB36 = new Proj('EPSG:27700', $proj4); $projLCC2SP = new Proj('EPSG:31370', $proj4); $projNAD27 = new Proj('EPSG:32040', $proj4); $pointWGS84 = new Point(-96, 28.5, $projWGS84); $pointNAD27 = $proj4->transform($projNAD27, $pointWGS84); $this->assertEquals($pointNAD27->x, 2963487.15, '', 0.1); $this->assertEquals($pointNAD27->y, 255412.99, '', 0.1); $pointWGS84 = $proj4->transform($projWGS84, $pointNAD27); $this->assertEquals($pointWGS84->x, -96, '', 0.1); $this->assertEquals($pointWGS84->y, 28.5, '', 0.1); $pointSrc = new Point(671196.3657, 1230275.0454, $projOSGB36); $pointDest = $proj4->transform($projWGS84, $pointSrc); $this->assertEquals(2.9964931538756, $pointDest->x, '', 0.1); $this->assertEquals(60.863435314163, $pointDest->y, '', 0.1); $pointSrc = $pointDest; $pointDest = $proj4->transform($projOSGB36, $pointSrc); $this->assertEquals(671196.3657, $pointDest->x, '', 0.1); $this->assertEquals(1230275.0454, $pointDest->y, '', 0.1); //from @coreation $pointLCC2SP = new Point(78367.044643634, 166486.56503096, $projLCC2SP); $pointWGS84 = new Point(3.3500208637038, 50.803896326566, $projWGS84); //Proj4php::setDebug(true); $pointWGS84Actual = $proj4->transform($projWGS84, $pointLCC2SP); $this->assertEquals($pointWGS84->x, $pointWGS84Actual->x, '', 0.1); $this->assertEquals($pointWGS84->y, $pointWGS84Actual->y, '', 0.1); //Proj4php::setDebug(false); $pointWGS84 = new Point(3.3500208637038, 50.803896326566, $projWGS84); $pointLCC2SP = new Point(78367.044643634, 166486.56503096, $projLCC2SP); //Proj4php::setDebug(true); $pointLCC2SPActual = $proj4->transform($projLCC2SP, $pointWGS84); $this->assertEquals($pointLCC2SP->x, $pointLCC2SPActual->x, '', 0.1); $this->assertEquals($pointLCC2SP->y, $pointLCC2SPActual->y, '', 0.1); //Proj4php::setDebug(false); // from spatialreference.org (EPSG:31370 page) $pointLCC2SP = new Point(157361.845373, 132751.380618, $projLCC2SP); $pointWGS84 = new Point(4.47, 50.505, $projWGS84); //Proj4php::setDebug(true); $pointWGS84Actual = $proj4->transform($projWGS84, $pointLCC2SP); $this->assertEquals($pointWGS84->x, $pointWGS84Actual->x, '', 0.0001); $this->assertEquals($pointWGS84->y, $pointWGS84Actual->y, '', 0.0001); //Proj4php::setDebug(false); $pointWGS84 = new Point(4.47, 50.505, $projWGS84); $pointLCC2SP = new Point(157361.845373, 132751.380618, $projLCC2SP); //Proj4php::setDebug(true); $pointLCC2SPActual = $proj4->transform($projLCC2SP, $pointWGS84); $this->assertEquals($pointLCC2SP->x, $pointLCC2SPActual->x, '', 0.1); $this->assertEquals($pointLCC2SP->y, $pointLCC2SPActual->y, '', 0.1); //Proj4php::setDebug(false); }
// $app = new \Slim\Slim(); $logWriter = new \Slim\LogWriter(fopen('./api-debug.log', 'a')); $app = new \Slim\Slim(array('log.enabled' => true, 'log.writer' => $logWriter, 'debug' => true)); use Firebase\JWT\JWT; $app->add(new \Slim\Middleware\JwtAuthentication(["secure" => false, "relaxed" => ["localhost"], "secret" => $key, "callback" => function ($options) use($app) { $app->jwt = $options["decoded"]; }, "rules" => [new \Slim\Middleware\JwtAuthentication\RequestPathRule(["path" => ["/token", "/user", "/rtuManager/informationOnload/", "/loginManager/checkJWT/", "/rtuManager/syncRTUFromWLMA/"], "passthrough" => ["/user"]]), new \Slim\Middleware\JwtAuthentication\RequestMethodRule(["passthrough" => ["OPTIONS"]])]])); /* proj4php */ // Use a PSR-4 autoloader for the `proj4php` root namespace. use proj4php\Proj4php; use proj4php\Proj; use proj4php\Point; // Initialise Proj4 $proj4 = new Proj4php(); // add it to proj4 $proj4->addDef("EPSG:32647", '+proj=utm +zone=47 +ellps=WGS84 +datum=WGS84 +units=m +no_defs'); $proj4->addDef("EPSG:24047", '+proj=utm +zone=47 +a=6377276.345 +b=6356075.41314024 +units=m +no_defs'); /* NuSOAP */ $client = new nusoap_client("http://58.137.5.126/epodws/service.asmx?wsdl", true); // $client->soap_defencoding = 'UTF-8'; $endpoint = "http://58.137.5.126/epodws/service.asmx?wsdl"; $client->forceEndpoint = $endpoint; $client->soap_defencoding = 'UTF-8'; $client->decode_utf8 = false; // แก้ปัญหาตัวอักษรภาษาไทยแสดง ???????? (web service unicode characters dispaly as question marks) $client->encode_utf8 = true; /* Test Manager */ $app->get('/testManager/getMsg/:name', function ($name) use($app) { getMsg($app, $name); }); $app->get("/user/", function () use($app) {
/** * */ public function testEveryTransformKnownToMan() { $proj4 = new Proj4php(); $codes = get_object_vars(json_decode(file_get_contents(__DIR__ . '/codes.json'))); foreach ($codes as $code => $defs) { $this->defs = $defs; $this->code = $code; if (isset($this->onlyTestTheseProjections) && !empty($this->onlyTestTheseProjections)) { if (is_array($this->onlyTestTheseProjections)) { if (!in_array($code, $this->onlyTestTheseProjections)) { continue; } } elseif ($code !== $this->onlyTestTheseProjections) { continue; } } if (in_array($code, $this->skipAllTestsForCode)) { continue; } if (key_exists('proj4', $defs) && !empty($defs->proj4) && key_exists($this->wkt, $defs) && !empty($defs->{$this->wkt})) { $wktStr = $defs->{$this->wkt}; if ($this->isInvalidWKT($wktStr)) { continue; } if ($this->isIgnoredProjection()) { continue; } $proj4->addDef($code, $defs->proj4); $codesString = json_encode(array($code, $defs->proj4, $wktStr), JSON_PRETTY_PRINT); try { $projection = new Proj($code, $proj4); $projWKTInline = new Proj($wktStr, $proj4); } catch (Exception $e) { throw new Exception($e->getMessage() . $codesString); //throw $e; } $this->assertNotNull($projection->projection, $codesString); $this->assertNotNull($projWKTInline->projection, $codesString); $expected = get_object_vars($projection->projection); $actual = get_object_vars($projWKTInline->projection); if ($this->isUtmTmerc($expected, $actual)) { if ($this->suppressOnUtmTmercMismatch) { continue; } else { $this->fail('UTM-TMERC Mismatch: ' . $codesString); } } //$this->assertEquals($expected, $actual, $codesString); if (key_exists('axis', $actual) || key_exists('axis', $expected)) { if ($actual['axis'] !== $expected['axis']) { if ($this->suppressOnAxisMismatch) { } else { $this->assertEquals(array_intersect_key($expected, array('axis' => '')), array_intersect_key($actual, array('axis' => '')), $codesString); } } } if (!$this->suppressToMeterMismatch && (key_exists('to_meters', $actual) && $actual['to_meters'] !== 1.0 || key_exists('to_meters', $expected) && $expected['to_meters'] !== 1.0)) { $this->assertEquals(array_intersect_key($expected, array('to_meters' => '')), array_intersect_key($actual, array('to_meters' => '')), $codesString); } if (!in_array($code, $this->skipRegularComparisonsForCode)) { $ignore = array_merge($this->dontUseTheseKeysForRegularComparison, $this->internalsPrecision); $a = array_diff_key($expected, $ignore); $b = array_intersect_key(array_diff_key($actual, $ignore), $a); $this->assertEquals($a, $b, print_r(array($a, $b, $codesString), true)); } $this->compareDatums($expected, $actual); $this->compareAlphaGama($expected, $actual); $this->comparePreciseInternals($expected, $actual); $unitA = strtolower($actual['units'][0]); $unitB = strtolower($expected['units'][0]); if (!empty($unitA) && $unitA != 'd' || !empty($unitB) && $unitB != 'd') { $this->assertEquals($unitA, $unitA, '(units mismatch) ' . $codesString); } //if either defines non zero alpha if (key_exists('from_greenwich', $actual) && $actual['from_greenwich'] !== 0.0 || key_exists('from_greenwich', $expected) && $expected['from_greenwich'] !== 0.0) { $this->assertEquals(array_intersect_key($expected, array('from_greenwich' => '')), array_intersect_key($actual, array('from_greenwich' => '')), $codesString); } $this->assertEquals(get_class($projection->projection), get_class($projWKTInline->projection), $codesString); } } }
echo "Source : " . $pointSrc->toShortString() . " in EPSG:25833<br>"; $pointDest = $proj4->transform($proj25833, $projWGS84, $pointSrc); echo "Conversion : " . $pointDest->toShortString() . " in WGS84<br><br>"; $pointSrc = $pointDest; echo "Source : " . $pointSrc->toShortString() . " in WGS84<br>"; $pointDest = $proj4->transform($projWGS84, $proj31468, $pointSrc); echo "Conversion : " . $pointDest->toShortString() . " in EPSG:31468<br><br>"; $pointSrc = new Point('-868208.53', '-1095793.57'); echo "Source : " . $pointSrc->toShortString() . " in S-JTSK<br>"; $pointDest = $proj4->transform($proj5514, $projWGS84, $pointSrc); echo "Conversion : " . $pointDest->toShortString() . " in WGS84<br><br>"; $pointSrc = $pointDest; echo "Source : " . $pointSrc->toShortString() . " in WGS84<br>"; $pointDest = $proj4->transform($projWGS84, $proj5514, $pointSrc); echo "Conversion : " . $pointDest->toShortString() . " in S-JTSK<br><br>"; $proj4->addDef("EPSG:27700", '+proj=tmerc +lat_0=49 +lon_0=-2 +k=0.9996012717 +x_0=400000 +y_0=-100000 +ellps=airy +datum=OSGB36 +units=m +no_defs'); $projOSGB36 = new Proj('EPSG:27700', $proj4); $pointSrc = new Point(671196.3657, 1230275.0454, $projOSGB36); echo "Source : " . $pointSrc->toShortString() . " in OSGB36<br>"; $pointDest = $proj4->transform($projWGS84, $pointSrc); echo "Conversion : " . $pointDest->toShortString() . " in WGS84<br><br>"; $pointSrc = $pointDest; echo "Source : " . $pointSrc->toShortString() . " in WGS84<br>"; $pointDest = $proj4->transform($projOSGB36, $pointSrc); echo "Conversion : " . $pointDest->toShortString() . " in OSGB36<br><br>"; $projOSGB36_2 = new Proj('PROJCS["OSGB 1936 / British National Grid",GEOGCS["OSGB 1936",DATUM["OSGB_1936",SPHEROID["Airy 1830",6377563.396,299.3249646,AUTHORITY["EPSG","7001"]],AUTHORITY["EPSG","6277"]],PRIMEM["Greenwich",0,AUTHORITY["EPSG","8901"]],UNIT["degree",0.01745329251994328,AUTHORITY["EPSG","9122"]],AUTHORITY["EPSG","4277"]],UNIT["metre",1,AUTHORITY["EPSG","9001"]],PROJECTION["Transverse_Mercator"],PARAMETER["latitude_of_origin",49],PARAMETER["central_meridian",-2],PARAMETER["scale_factor",0.9996012717],PARAMETER["false_easting",400000],PARAMETER["false_northing",-100000],AUTHORITY["EPSG","27700"],AXIS["Easting",EAST],AXIS["Northing",NORTH]]', $proj4); $pointSrc = new Point(671196.3657, 1230275.0454, $projOSGB36_2); echo "Source : " . $pointSrc->toShortString() . " in OSGB36 from OGC WKT<br>"; $pointDest = $proj4->transform($projWGS84, $pointSrc); echo "Conversion : " . $pointDest->toShortString() . " in WGS84<br><br>"; $pointSrc = $pointDest;