File "test.php"
Full path: /www/ansys/qgis/004_iwakuni/record/test.php
File size: 1.47 KiB (1503 bytes)
MIME-type: text/x-php
Charset: utf-8
<?php
//-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
// 点が線分のどちら側に存在するかをチェック
//-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
function getSide($p_, $a_, $b_)
{
$x = "lon";
$y = "lat";
$exter = $p_[$x] * ($a_[$y] - $b_[$y]) + $a_[$x] * ($b_[$y] - $p_[$y]) + $b_[$x] * ($p_[$y] - $a_[$y]);
if (0 < $exter)
return 1;
else if (0 > $exter)
return -1;
else
return 0;
}
//-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
// 点がエリアに含まれるかをチェック
//-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
function insideArea($point_, $area_)
{
$totalSide = 0;
$linkNum = count($area_);
$bIndex = 0;
for($iCount = 0; $iCount < $linkNum; $iCount++)
{
if ($linkNum > $iCount + 1)
$bIndex = $iCount + 1;
else
$bIndex = 0;
$side = getSide($point_, $area_[$iCount], $area_[$bIndex]);
if ($side == 0)
return 1;
else
$totalSide += $side;
}
if (abs($totalSide) == $linkNum)
return 1;
return 0;
}
$IN_COUNT_AREA = array(
array("lat" => 34.184527, "lon" => 132.173597),
array("lat" => 34.177659, "lon" => 132.168918),
array("lat" => 34.170783, "lon" => 132.162138),
array("lat" => 34.172258, "lon" => 132.159519),
array("lat" => 34.180916, "lon" => 132.164411),
array("lat" => 34.185252, "lon" => 132.170419)
);
// 34.18113706 132.1650571
if (insideArea(array("lat" => "34.18113706", "lon" => "132.1650571"), $IN_COUNT_AREA) == 1)
{
print "含まれる";
}
else
{
print "含まれない";
}
?>