Skip to Content.
Sympa Menu

cgal-discuss - Re: [cgal-discuss] Efficient query if a point is inside any polygon in a list of polygons

Subject: CGAL users discussion list

List archive

Re: [cgal-discuss] Efficient query if a point is inside any polygon in a list of polygons


Chronological Thread 
  • From: Sebastien Loriot <>
  • To:
  • Subject: Re: [cgal-discuss] Efficient query if a point is inside any polygon in a list of polygons
  • Date: Tue, 14 Jun 2022 18:08:39 +0200
  • Authentication-results: mail3-smtp-sop.national.inria.fr; spf=None ; spf=Pass ; spf=None
  • Ironport-data: A9a23:drXc0Kv8Q4I0ODeoH/5Lf/Qj6OfnVGtYMUV32f8akzHdYApBsoF/q tZmKWGBbP6KMzTzL48kOYm2oBxUvJXTzNFrGVNp/y5nEypBgMeUXt7xwmXYb3rDdJWbJK5Ex 5xDMYeYdJhcolv0/ErF3m3J9CEkvU2wbuOgTraCYEidfCc8IMsboUsLd9UR38g52LBVPyvX4 Ymo+5OGZAf/s9JJGjt8B5yr+EsHUMva42twUmwWPZina3eD/5W9JMt3yZCZdxMUcKEMdgKJb 7qrIIWCw4/s10xF5uVJPVrMWhZirrb6ZWBig5fNMkSoqkAqSicais7XOBeAAKtao23hojx/9 DlCnbn3SVgCBrzJouI+fzkfCyclDIhYp5aSdBBTseTLp6HHW37lwvErE1tveINFo6B4BmZB8 fFeIzcIBvyBr7jukfTrF6823J1lcZCD0IA34hmMyRnCCfE8QJffBaDOzdBd1TY0wMtJGJ4yY uJAN2UyN06QOXWjPH9OMMo0vNermkPhegJnrGuPu4Ul4jHMmVkZPL/FaYKJILRmX/59lUmRo ifK/n/yHwoBHMeOzCKMtHOqnO7G2y3hML/+D5W9//9uxUKJnykdVURQWly8rv20zEW5XrqzN nD45AIL6qht33S6S+P7fDGY52aC5S85RYV5RrhSBB629oLY5AOQB24hRzFHacA7uMJeedDM/ g/Z9z8OLWw/2IB5WU5x5Z/P8mzvYXl9wXsqIH5bHVFcsrEPtalq1kqXJuuPBpJZmTEcJN0d6 zWDrSx7mK9KyMBWjuO0+lfIhz/qrZ/MJuLU2uk1djL1hu+aTNT9D2BN1bQ9xagbRGp+Zgfa1 EXoY+DEsIgz4WilzURhutklErCz/OqiOzbBm1NpFJRJ323zpiP6Id0Ium4kfRsB3iM4ldnBM B+7VeR5tM87AZdWRfIfj3+ZUJh2l/e4S7wJqNiNMYEVOfCdizNrDAk3PRLKt4wcuEcrlq47N P+mnTWEXB4n5VBc5GPuHY81iOd1rghnnD+7bc2lknyPjOXGDFbIGO9tGAbfNYgRsfLUyC2Lq Yo3H5XRkH13DrauChQ7BKZJcjjm21BgVc6owyGWH8bfSjdb9JYJUqeAn+x7ItQ/wMy4VI7gp xmAZ6OR83Kn7VWvFOlAQik+AF82dZog/389IwI2OlOkhyoqbYq1vfUQcpI2ef8s8+k6lax4S PwMesOhBPVTS2Sfq25NM8Wl9IEyJg62gQ+uPja+ZGdtcpNlQTvP8IC2cwbq8h4IESfq59A1p Ket11+ATJdaH1ZiAc/aZeiB1VS0uXRByut+U1GZcNZWcUTotoNtLnWp3PMwJsgNLzTFxyebh 17GW0dG+bGVrtZsotfThK2Co4O4KMdEHxJXTzvB8LK7FSjG5W78k4JNVeC/ezqCBm75/aOVY /oMk6PxPfgBq1Z9s4RmFoFtw69jtcDkoKVXz1g9EXjGMwarB7dnLiXU1MVDrPcWlLpQuA/zR VjWv9cHYPOGP8TqFFNXLw0gN7zR2fYRkzjUzPI0PESqu3MtreTfCR1fb0uWlShQDLppK4d5k +0vj8gbtl6kgR0wP9fa0y1ZqzaWInobX/l1v50WGtWw2A8iy1UHfoaFTyGrudeAbNJDNkRsK TiR3fKQi7NZz0vEUnwyCXmdgrYH1MpW4EhHnA0YOlCEutvZnftrjhdfxjI6E1ZOxRJd3uMvZ 2VmOiWZ/0lVE+uEWSSCY4ytJ+2FLBiQ+0i01EFQ0WOEFg+nUWvCKGB7MuGIlKzcH6SwYRADl Ix0Ck68OdopQC019iQ3UE9h7ffkSLSdMyXczdu/EZ3t84YSOFLYb2zHWYbMgxTiCMI1wkbAo IGGOQq2hbLTbUYtnkHwN2VWOXn8hvxJyKyujMyNJJ80IFw=
  • Ironport-hdrordr: A9a23:gv4k1aGpnP9LJOM4pLqEy8eALOsnbusQ8zAXPjNKOHpom6uj5r yTdZUgpGLJYVMqMk3I9urwWpVoLUmsjqKdpLNhR4tKPzOW3VdATrsSjrcKqgeIc0afygce79 YZT0EXMrzN5DNB/KHHCWeDYq8dKZW8gcSVbCTlo0uFjzsGV0it1WhE48+gfHFLeA==
  • Ironport-phdr: A9a23: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
  • Ironport-sdr: ok6m2iHxu9tP8jl5ZX4dMCTx3HtQVcbD+uk3Qy7+OPBdFGBtnoNt6eIOn2TVs88yHG3Yns8b2e tPOC4+A1c8rPSKuac9mGFKXlGQb2BtgG3bUcTZE5IjZ8aNjRZwBKQXRw6D2odz6J4qNsSqE3rD 0WLKc6vbEF7m3yFe81Ep5RqbGx0WX5ux5UfC/3/QKbHYt7QL2wWhv9f2fOJIyFH1g7CbtHxyMO gaTmh9SEqN6jwYdE/SRmSIYahxCLyz9u6MSE1vtm9Kh/st254a0Dvt2A/gdumrLiqCpTiiRo4c IB55xSQaxGDgU+P9fydM3bjJ

You can also use this package:
https://doc.cgal.org/latest/Interval_skip_list/index.html

to filter out segments that are relevant for the ray shooting instead
of using the AABB-tree.

Andreas did use that for the code shipped in https://github.com/CGAL/cgal/pull/6377, but for some reason the code is not in the
PR (missing git add?)

Best,

Sebastien.

On 6/14/22 17:50, Andrew Cunningham wrote:
Hi,
I had to deal with a similar issue. I treated this as a 3D ray tracing problem as the technique is very robust.

- triangulate the polygons ( remembering which polygon the triangles belong to)
- Add the triangles to a 3D AABB tree with z=0
- shoot a ray from say z=1 in the direction 0,0,-1 using x,y of your query point
- first_intersection() will return the triangle

https://doc.cgal.org/latest/AABB_tree/index.html#aabb_ray_shooting <https://doc.cgal.org/latest/AABB_tree/index.html#aabb_ray_shooting>

If this is a performance critical application you could use embree ( open source, very high performance ray tracer) instead of CGAL for raytracing. Also if you can search multiple points in parallel then it's a trivially parallel problem for which you can use, say, OpenMP

Andrew
On Jun 10, 2022, at 1:04 PM, Renato Silveira < <>> wrote:


Dear all,

I need to query if a point is inside any polygon from a list of many polygons. Is there a spatial search tree that speeds up this process?

Thanks for any insight

--
You are currently subscribed to cgal-discuss.
To unsubscribe or access the archives, go to
https://sympa.inria.fr/sympa/info/cgal-discuss <https://sympa.inria.fr/sympa/info/cgal-discuss>


--
You are currently subscribed to cgal-discuss.
To unsubscribe or access the archives, go to
https://sympa.inria.fr/sympa/info/cgal-discuss




Archive powered by MHonArc 2.6.19+.

Top of Page