用php检查是不是指向内部或不在多多边形geojson中

Posted

技术标签:

【中文标题】用php检查是不是指向内部或不在多多边形geojson中【英文标题】:check if point inside or not in multipolygon geojson with php用php检查是否指向内部或不在多多边形geojson中 【发布时间】:2020-09-25 12:52:42 【问题描述】:

我有这样的多多边形点的geojson

"geometry": 
    "type": "MultiPolygon",
    "coordinates": [
        [
            [
                [
                    97.11917877197294,
                    2.113018035888672
                ],
                [
                    97.15389251709013,
                    2.086940050125179
                ],
                [
                    97.11464691162126,
                    2.0038630962372395
                ],
                [
                    97.07888793945335,
                    2.0861101150512695
                ],
                [
                    97.11917877197294,
                    2.113018035888672
                ]
            ]
        ],
        [
            [
                [
                    97.2437820434572,
                    2.2361090183258625
                ],
                [
                    97.33863830566412,
                    2.1651189327241127
                ],
                [
                    97.35886383056646,
                    2.0827920436860268
                ],
                [
                    97.31186676025408,
                    2.0578811168671223
                ],
                [
                    97.21376800537138,
                    2.1765921115875813
                ],
                [
                    97.11254882812517,
                    2.214848995208797
                ],
                [
                    97.2437820434572,
                    2.2361090183258625
                ]
            ]
        ],
        [
            [
                [
                    95.80278015136736,
                    2.9305601119996254
                ],
                [
                    96.03083038330107,
                    2.75694394111639
                ],
                [
                    96.1138916015625,
                    2.739722967147941
                ],
                [
                    96.10743713378912,
                    2.6363189220428467
                ],
                [
                    96.17388916015653,
                    2.6738901138305664
                ],
                [
                    96.25332641601562,
                    2.585560083389339
                ],
                [
                    96.40838623046875,
                    2.511549949646053
                ],
                [
                    96.47194671630865,
                    2.451111078262329
                ],
                [
                    96.49810028076195,
                    2.3621609210968586
                ],
                [
                    96.44374847412115,
                    2.328478097915763
                ],
                [
                    96.3180541992188,
                    2.3533339500427246
                ],
                [
                    96.31012725830095,
                    2.4228711128234863
                ],
                [
                    96.22938537597685,
                    2.4415690898895264
                ],
                [
                    96.07550811767572,
                    2.5694530010224526
                ],
                [
                    95.95471954345732,
                    2.5691659450532143
                ],
                [
                    95.86434936523449,
                    2.6364710330963703
                ],
                [
                    95.79194641113281,
                    2.63611102104187
                ],
                [
                    95.73472595214844,
                    2.755556106567383
                ],
                [
                    95.80278015136736,
                    2.9305601119996254
                ]
            ]
        ],
        [
            [
                [
                    96.23584747314459,
                    4.055531978607121
                ],
                [
                    96.14090728759777,
                    4.148777961731014
                ],
                [
                    96.02066802978521,
                    4.2103490829467205
                ],
                [
                    95.75129699707048,
                    4.496090888977108
                ],
                [
                    95.54023742675787,
                    4.670730113983154
                ],
                [
                    95.41124725341797,
                    4.82388782501215
                ],
                [
                    95.3655548095706,
                    5.0266671180726235
                ],
                [
                    95.29777526855474,
                    5.116112232208252
                ],
                [
                    95.30944824218756,
                    5.161940097808895
                ],
                [
                    95.2144470214846,
                    5.275279998779411
                ],
                [
                    95.25222015380882,
                    5.376390933990535
                ],
                [
                    95.1934738159182,
                    5.527058124542236
                ],
                [
                    95.27583312988287,
                    5.54666805267334
                ],
                [
                    95.43222045898438,
                    5.656943798065299
                ],
                [
                    95.50026702880876,
                    5.601941108703613
                ],
                [
                    95.61194610595726,
                    5.627779960632438
                ],
                [
                    95.88722229003935,
                    5.504170894622803
                ],
                [
                    95.9033432006836,
                    5.406389236450195
                ],
                [
                    96.07805633544922,
                    5.290554046630973
                ],
                [
                    96.26305389404297,
                    5.260831832885856
                ],
                [
                    96.41722106933616,
                    5.198890209197998
                ],
                [
                    96.50971984863287,
                    5.1994409561157795
                ],
                [
                    96.81250000000011,
                    5.263887882232723
                ],
                [
                    96.98719787597668,
                    5.26252985000616
                ],
                [
                    97.10362243652344,
                    5.224556922912598
                ],
                [
                    97.19916534423845,
                    5.14194297790533
                ],
                [
                    97.49722290039074,
                    5.250229835510368
                ],
                [
                    97.64472198486345,
                    5.075553894042969
                ],
                [
                    97.80926513671886,
                    4.932139873504639
                ],
                [
                    97.90165710449219,
                    4.88889122009283
                ],
                [
                    97.96437072753923,
                    4.678417205810604
                ],
                [
                    98.01380920410156,
                    4.61774396896368
                ],
                [
                    97.97229003906273,
                    4.560091018676758
                ],
                [
                    98.06594085693382,
                    4.553030967712459
                ],
                [
                    98.23750305175798,
                    4.458828926086369
                ],
                [
                    98.28028106689453,
                    4.331944942474365
                ],
                [
                    98.23779296875023,
                    4.287230968475399
                ],
                [
                    98.20121765136747,
                    4.304190158844051
                ],
                [
                    98.066879272461,
                    4.253109931945858
                ],
                [
                    98.02313232421892,
                    3.969779014587516
                ],
                [
                    97.8999099731447,
                    3.8914198875427246
                ],
                [
                    97.92320251464844,
                    3.8477001190186684
                ],
                [
                    97.80166625976557,
                    3.7178299427031902
                ],
                [
                    97.95562744140625,
                    3.4814200401305584
                ],
                [
                    97.94970703125017,
                    3.3915400505066486
                ],
                [
                    98.02742004394537,
                    3.3311500549317543
                ],
                [
                    97.92236328125028,
                    3.2287499904632
                ],
                [
                    97.98346710205095,
                    3.0839109420777504
                ],
                [
                    97.9392166137697,
                    3.0719408988953205
                ],
                [
                    97.95461273193371,
                    2.9015390872955322
                ],
                [
                    98.00679016113287,
                    2.88955998420721
                ],
                [
                    98.11132049560553,
                    2.7857000827789307
                ],
                [
                    98.08683776855486,
                    2.734899997711125
                ],
                [
                    98.12425994873047,
                    2.655121088028068
                ],
                [
                    98.07522583007812,
                    2.5755290985106853
                ],
                [
                    98.11209106445335,
                    2.424449920654297
                ],
                [
                    98.18766021728544,
                    2.319310903549308
                ],
                [
                    98.15334320068388,
                    2.146939992904663
                ],
                [
                    97.94860839843756,
                    2.270833969116268
                ],
                [
                    97.7827758789062,
                    2.2338891029359047
                ],
                [
                    97.66278076171886,
                    2.4000000953674316
                ],
                [
                    97.65083312988281,
                    2.668056011200065
                ],
                [
                    97.61055755615251,
                    2.844719886779899
                ],
                [
                    97.41583251953142,
                    2.9408340454100994
                ],
                [
                    97.31833648681635,
                    3.0527780056000324
                ],
                [
                    97.24407196044928,
                    3.2351610660554115
                ],
                [
                    97.17916870117188,
                    3.249722957611084
                ],
                [
                    97.00249481201189,
                    3.5462410449982826
                ],
                [
                    96.90343475341825,
                    3.602802038192806
                ],
                [
                    96.86277008056646,
                    3.6955509185791584
                ],
                [
                    96.77233886718756,
                    3.739048957824707
                ],
                [
                    96.53681945800804,
                    3.7305409908294678
                ],
                [
                    96.38664245605469,
                    3.8503909111024086
                ],
                [
                    96.23584747314459,
                    4.055531978607121
                ]
            ]
        ],
        [
            [
                [
                    95.05889129638666,
                    5.751111030578613
                ],
                [
                    95.14236450195318,
                    5.670001029968262
                ],
                [
                    95.05139160156256,
                    5.670833110809326
                ],
                [
                    95.05889129638666,
                    5.751111030578613
                ]
            ]
        ],
        [
            [
                [
                    95.21721649169939,
                    5.90778112411499
                ],
                [
                    95.28666687011736,
                    5.841942787170353
                ],
                [
                    95.32861328125017,
                    5.900834083557243
                ],
                [
                    95.37277984619146,
                    5.845831871032772
                ],
                [
                    95.28507232666044,
                    5.780276775360221
                ],
                [
                    95.21721649169939,
                    5.90778112411499
                ]
            ]
        ]
    ]

我需要检查给定的坐标点是否在avilabe区域内 例如检查坐标点4.585919718930924,97.19313601405156是否在区域内

我用turfjs找到了javascript的解决方案

但我希望这个过程只在带有php的服务器上

我找到了 php 的解决方案,但只能使用一维数组 https://assemblysys.com/php-point-in-polygon-algorithm/

更新

通过手动将 turf js 转换为 php 解决

【问题讨论】:

【参考方案1】:

通过手动将 turf js 转换为 php 解决

【讨论】:

以上是关于用php检查是不是指向内部或不在多多边形geojson中的主要内容,如果未能解决你的问题,请参考以下文章

如何在PHP mysql中检查天气点是否在多边形内部

判断点是不是在多边形内部的方法

检查点是不是位于(或靠近)凸多边形边缘

用于测试点是不是在 geojson 多多边形中的 Node.js/Javascript 库

怎么判断一个点是不是在多边形区域内

在windows系统下的cmd下面执行php 命令,返回‘PHP’不是内部或外部命令,也不是可运行的程序。。