Comments (10)
Right, so the object that has "type": "Polygon"
is what needs to be passed to polygonFromGeoJSON
, i.e., data[n].geometry
.
Yes, polygonFromGeoJSON
will fill out the inverted flag.
from polybooljs.
So does this library returns holes when taking union ?
it could if that's the correct answer, you can play with the demo and see for yourself by dragging points around:
from polybooljs.
Just switched from Turf to PolyBoolJs, and i must say i love it! We had many problems with Turf when working with it. Sometimes the resulting geometry is invalid, sometimes it create unreasonable geometries.
With PolyBoolJs we didn't encounter such problems!
What would be nice is if we could pass a Feature to PolyBoolJs and not only a geometry. Also if you stick to geometry a more meaningful error would be nice. I first thought the GeoJSON addon did not work.
An Error like:
PolyBool: You didn't pass a GeoJSON geometry to PolyBool
Or
PolyBool does not support Type: {type}. Try passing a geometry of type 'Polygon' or 'MultiPoligon'
would be nice
Keep up the good work!
from polybooljs.
#11 says GeoJSON is working as expected.
from polybooljs.
The documentation is a bit unclear for GeoJson.
From the function call i'm assuming polygonFromGeoJSON will retrieve a single polygon from a geojson object that only contains a single polygon?
Also the inverted tag has no explanation so I am unsure if this is auto generated when reading from geojson? Maybe an example for this would help.
My use case is to combine 10 to 500 polygons retrieved from 4-15 geojson files. Do I need to extract them individually to union them? polygonFromGeoJSON seems to be what I'm looking for but I'm not sure if the result will be what I am expecting it to do, which is extract all polygon(s) and return an array of PolyboolJS polygons to use in union/intersect/etc.
from polybooljs.
The polygonFromGeoJSON
function should work on Polygon
and MultiPolygon
GeoJSON types. It should convert a GeoJSON object to a polybooljs polygon.
The easiest way to explain the inverted flag is to see it in the demo:
https://rawgit.com/voidqk/polybooljs/master/dist/demo.html
If you click on the Invert Red or Invert Blue buttons, you can see what toggling the invert flag does. What's considered outside the polygon is now considered inside, and vice-versa.
I don't know if you need to extract the GeoJSON individually, I don't know what your data looks like. The polygonFromGeoJSON
function takes an object that looks like { type: "MultiPolygon", coordinates: [[...]] }
.
from polybooljs.
Extract all polygons from a geojson file. eg.
This geojson contains n
polygons:
{ "type": "Feature", "properties": {"party": "Republican"}, "geometry": { "type": "Polygon", "coordinates": [[ [-104.05, 48.99], [-97.22, 48.98], [-96.58, 45.94], [-104.03, 45.94], [-104.05, 48.99] ]] } }, { "type": "Feature", "properties": {"party": "Democrat"}, "geometry": { "type": "Polygon", "coordinates": [[ [-109.05, 41.00], [-102.06, 40.99], [-102.03, 36.99], [-109.04, 36.99], [-109.05, 41.00] ]] } },{...}
Another example geojson collection
Will polygonFromGeoJSON
only extract the first polygon?
About the inverted tag; Will the resulting poly from polygonFromGeoJSON
contain a default
eg {inverted : false}
? Assuming most polys are not inverted.
from polybooljs.
A handy page to play with geojson
http://geojson.io
Added example geojson : pastebin
from polybooljs.
Hey.
Just to add some random feedbacks and caveats of my knowledge and experience about GeoJSON, maybe could help, and lead to improvements in the future.
- The
types
field should respect case (and is camel cased) - A Feature is something in the shape
{type: 'Feature', properties: {}, geometry: <Geometry>}
type
,properties
(don't forget it) andgeometry
are mandatory
- A Geometry is something in the shape
{type: <GeometryType>, coordinates: []}
OR{type: 'GeometryCollection', geometries: [Geometry]}
- There is a trick here, and this library should be concerned about this :
GeometryCollection
is a valid geometry, and thus changes the shape of the root Geometry object... - I don't know if a GeometryCollection can be a geometry child of another GeometryCollection, but that's worth checking it
- There is a trick here, and this library should be concerned about this :
- About coordinates, they are separated in "rings" logic
- A Polygon
coordinates
member is in the shape
[ // <= Array of 'rings' [ // Single outer 'ring'. It MUST be counter-clockwise [lng, lat], [lng, lat], [...] // Coordinates serie MUST have last === first ], [ // Inner 'ring' (hole). It MUST be clockwise [lng, lat], [lng, lat], [...] // Coordinates serie MUST have last === first ], [ // Another inner 'ring' (hole). It MUST be clockwise [lng, lat], [lng, lat], [...] // Coordinates serie MUST have last === first ] ]
- (I don't know if a "hole" (inner ring) can contain an "island". But that's worth checking...)
- A MultiPolygon
coordinates
member is an array of Polygon coordinates member - A Position (coordinates couple) contains at least lng and lat in this order, but is not limited to this length, and could include, eg., elevation as a 3rd member (
[lng, lat, elevation]
) - Any GeoJSON member can include a
srs
(orcrs
, can't remember) member, which represent the projection of the data. The implicit projection when not provided is WGS84 (=== EPSG:4326)
- A Polygon
Some useful stuff :
from polybooljs.
So does this library returns holes when taking union ?
from polybooljs.
Related Issues (20)
- algorithm comparison
- Speed improvement HOT 8
- Suggestion: Area HOT 1
- union result is wrong
- polybool java HOT 1
- Union completely ignoring some polygons HOT 4
- Holes (again) HOT 2
- Feature Request: a way to cleanup polygons with zero-length segments HOT 1
- I made a demo game based on polybooljs, looking for performance improvements. HOT 1
- Hello, the performance of this library is very low, and the calculation is very slow. When can we have an optimized version? HOT 1
- Consider adding line segments HOT 2
- Zero length segments created HOT 1
- Yet another Java implementation HOT 3
- Cut polygon by line HOT 2
- getting intersection points HOT 2
- About porting the libary to antoher languages HOT 1
- Polygon subtraction creates degenerate result polygon HOT 3
- python port HOT 5
- Adapt code for polyline clipping.
- Geometric meaning of epsilon?
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from polybooljs.