ホームページ > php教程 > php手册 > 道格拉斯坐标抽稀算法【PHP实现】

道格拉斯坐标抽稀算法【PHP实现】

WBOY
リリース: 2016-06-06 19:35:24
オリジナル
1519 人が閲覧しました

道格拉斯坐标抽稀算法 无 $polyline = "116.621222,41.028553;116.621648,41.029848;.....";$pl = split(";", $polyline);$plstr = "";$flag = 0;$min = 0.0001;for ($j=0; $j count($pl)-1; $j=$j+3) { $xy1 = split(",", $pl[$j]);$x1 = $xy1[0];$y1 = $xy1

道格拉斯坐标抽稀算法

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

$polyline = "116.621222,41.028553;116.621648,41.029848;.....";

$pl = split(";", $polyline);

$plstr = "";

$flag = 0;

$min = 0.0001;

for ($j=0; $j < count($pl)-1; $j=$j+3) {

    $xy1 = split(",", $pl[$j]);

    $x1 = $xy1[0];

    $y1 = $xy1[1];

    $xy2 = split(",", $pl[$j+2]);

    $x2 = $xy2[0];

    $y2 = $xy2[1];

    $b = $x1 - $x2;

    $a = $y2 - $y1;

    $c = ($y1 - $y2)*$x1 - $y1*($x1 -$x2);

    $xys = split(",", $pl[$j+1]);

    $d = (abs($a * $xys[0] + $b * $xys[1] + $c)) / (sqrt($a * $a + $b * $b));

    if($d < $min) {

        if($flag == 0)

            $plstr .= $pl[$j+1];

        else

            $plstr .= ";".$pl[$j+1];

        $flag++;

    }

}

$polyline = $plstr;

//希望有技术大神多多提点,帮助我完善代码,万分感谢

ログイン後にコピー
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のおすすめ
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート