-
Notifications
You must be signed in to change notification settings - Fork 1
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
PDOK-14231 #20
base: main
Are you sure you want to change the base?
The head ref may contain hidden characters: "PDOK-14231_Als_OZON_wil_ik_uitgefilterde_geometrie\u00EBn_geaggregeerd_kunnen_weergeven_(POC)"
PDOK-14231 #20
Conversation
Als OZON wil ik uitgefilterde geometrieën geaggregeerd kunnen weergeven (POC)
pkg/gpkg/gpkg.go
Outdated
@@ -28,6 +28,10 @@ func (f *featureGPKG) UpdateGeometry(geometry geom.Geometry) { | |||
f.geometry = geometry | |||
} | |||
|
|||
func (f *featureGPKG) IsReduced(isReduced bool) { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
misschien SetIsReduced
of AddIsReduced
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
goeie, gefixed
om maar te beginnen... volgende keer iets vriendelijker branch name.... |
Als ik er nu zo over nadenk hebben we nu een sieve functie die "meer" doet dan alleen zeven. m.b.t. de twpayne/go-geom package lijken er handige func() in te zitten, maar moeten we wel ff goed nadenken of we die moeten gebruiken of hoe we de bruikbare specifieke delen kunnen implementeren. |
@@ -9,6 +9,8 @@ require ( | |||
github.com/urfave/cli/v2 v2.8.1 | |||
) | |||
|
|||
require github.com/twpayne/go-geom v1.4.1 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
waarom een 2de spatial pkg?
is was go-spatial/geom niet voldoende?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
ik heb de centroid berekening van de huidige als eerste geprobeerd, maar toen kreeg ik hele rare uitkomsten die ik niet kon verklaren. Infinity numbers, NaNs, hele hoge negatieve getallen (terwijl alle punten boven 0 waren) en als er een berekening uit kwam, dan klopte die niet. Na een dag proberen dacht ik even een ander pkg gebruiken, en die leverde wel output die ik verwacht (met als nadeel dat ik wat dingen moest doen om coordinaten om te zetten.
pkg/sieve.go
Outdated
@@ -69,19 +74,54 @@ func writeFeaturesToTarget(postSieve chan Feature, kill chan bool, target Target | |||
kill <- true | |||
} | |||
|
|||
// getMultiPolygonCentroid returns Point with the centroid value of a multiPolygon |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
waar (behalve de test) wordt deze (getMultiPolygonCentroid) gebruikt?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
ha, das inderdaad dubbel. die kan weg (opzet is paar keer gewijzigd)
return multiXyCoordinates | ||
} | ||
|
||
func makeCoord(point [2]float64) geometry.Coord { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
hoe nodig is deze functie gezien die 1x maar wordt aangeroepen?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
niet, maar ik dacht dat het leesbaarder zou zijn
pkg/sieve.go
Outdated
for _, p := range mp { | ||
if sievedPolygon := polygonSieve(p, resolution); sievedPolygon != nil { | ||
if sievedPolygon, b := polygonSieve(p, resolution); b == false { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
(b== false) -> !b
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
fair, gefixed
oja, voor z'n grote wijziging is het ook fijn als de README geupdate is (+voorbeeld) |
haha, nja, het is wel makkelijk te herleiden naar jira ticket zo ;) maar ik ga nadenken over hoe dat in de toekomst beter kan
dat is wat ik initieel wilde (sieve en replace functie los an elkaar), alleen dan zit ik met multipolygon die leunt op polygon sieve. omdat mp uit p bestaat, moet ik op dat punt al beslissen: weglaten of omzetten naar een punt. het is mij niet helemaal duidelijk wat stap sieve in read-replace-sieve-write doet, we doen of weglaten of vervangen, maar dat is op basis van de berekeningen die in sieve functie gebeuren. moeten we niet een situatie hebben zo van read->moet_ik_iets_mee?-(ja)->moet_ik_weglaten_of_vervangen->dat_gene_doen->write? |
Nog over de isReduced state: ik dacht dat het wenselijk was om zichtbaar te maken dat iets aangepast is. Het was iig handig om te hebben voor het testen ;) Maar het leek mij ook netjes om te vermelden van "hey, deze informatie is bewerkt en niet 1-op-1 uit de data gehaald. Soort disclaimer eigenlijk |
// multiPolygonSieve will split it self into the separated polygons that will be sieved before building a new MULTIPOLYGON | ||
func multiPolygonSieve(mp geom.MultiPolygon, resolution float64) geom.MultiPolygon { | ||
func multiPolygonSieve(mp geom.MultiPolygon, resolution float64) (geom.MultiPolygon, bool) { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
kun je de return values namen geven? voor leesbaarheid en dan worden ze ook meteen geinitialiseerd
mp := feature.Geometry().(geom.MultiPolygon) | ||
mp, b := multiPolygonSieve(mp, resolution) | ||
|
||
if b { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
een beetje verwarrend (voor mij) dat de b
hier net omgedraaid is t.o.v. die bij polygon. ook omdat hij in multiPolygonSieve
needsProcessing
genoemd is, maar de geometry hier dan juist niet in de needsProcessing
channel gaat.
mp := feature.Geometry().(geom.MultiPolygon) | ||
var processedMultiPolygon geom.MultiPolygon | ||
for _, p := range mp { | ||
minArea := resolution * resolution |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
die kan minstens één regel omhoog
polygonCoords := getPolygonCoords(p) | ||
if polygonCoords != nil { | ||
polygon := geometry.NewPolygon(geometry.XY).MustSetCoords(polygonCoords) | ||
centroidCoord, err := xy.Centroid(polygon) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
waarom de centroide van de polygoon? en niet van de bbox?
Omschrijving
Als OZON wil ik uitgefilterde geometrieën geaggregeerd kunnen weergeven (POC)
geometrieen worden omgezet in POINT geom ipv verwijderd
https://dev.kadaster.nl/jira/browse/PDOK-14231
Type verandering
Checklist: