سلام به دوستان گلم در پست قبلی طریقه ساخت یکی از نوع های geometry و توضیح دادم که به چه صورت ما میتونیم یه فیلد از نوع polygon داشته باشیم.
در این پست قصد دارم تا به نحوه جستجو در Polygon بپردازم که به چه صورت ما میتونیم یک نقطه را در polygon خود جستجو کنیم. postgis دارای متدهای مختلفی هست که شما میتونید وارد سایت رسمی آن شوید و متدهای مختلف آن را مشاهده کنید. و براساس نوع جستجوی که میخواید انجام دهید متد مناسب آن را انتخاب کنید. مثالی که اینجا میخوام بزنم در doctrine orm هست. من در این مثال قصد دارم ُ ببینم نقطه ای که وارد میشود در محیط polygon قرار دارد یا نه؟
برای این کار از متد intersect استفاده میکنم.
خیلی ساده اینکار انجام میشه. فقط کافیه متدهای مربوطه را فراخوانی کنیم به صورت زیر بنویسیم. st_intersects(sp_makePoint(:lat, :lng) , z.area) = true) lat و long ورودی ها هستن که ما از سمت کاربر دریافت میکنیم area: فیلد polygon ما هست. public function searchPostalCodePolygon( $zipLat, $ziplong) { return $this->createQueryBuilder('d') ->select([ 'd', ]) ->andWhere(" (st_intersects(sp_makePoint(:lat, :long) , d.area) = true)") ->setParameter('lat', $zipLat) ->setParameter('long', $ziplng) ->getQuery() ->getResult(); }
به همین سادگی میتوانیم درون یک polygon جستجو کنیم
ممنون که تا اینجا همراهم بودید و امیدوارم که مفید واقع شده باشد.
با تشکر امیر سلخوری هستم توسعه دهنده.
01000001011011010110100101110010001000000101001101100001011011000110101101101000011011110111001001101001