예제 #1
0
 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);
 }
예제 #2
0
 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);
 }
예제 #3
0
파일: index.php 프로젝트: scada-josh/rmr
// $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) {
예제 #4
0
 /**
  *
  */
 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);
         }
     }
 }
예제 #5
0
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;