melsk-r / HC-BAG-bevragen-issues

0 stars 0 forks source link

Als medewerker parkeren wil ik alle adressen van een parkeerzone kunnen opvragen door een vrije contour op te geven #285

Closed melsk-r closed 3 months ago

melsk-r commented 3 months ago

Originally created by CathyDingemanse (https://github.com/VNG-Realisatie/BAG-Gemeentelijke-wensen-tav-BAG-Bevragingen/issues/460):

...zodat ik een vergunningsaanvraag op een adres kan matchen op een parkeerzone. EN deze adressen kan verrijken met bijvoorbeeld informatie over parkeren op eigen terrein (POET).

API moet vrije contour als queryparameter kunnen bevatten, bijvoorbeeld de coördinaten van een parkeerzone, bijvoorbeeld:

POLYGON ((4.290281097 52.11055475, 4.290455697 52.110589737, 4.290493954 52.110665777, 4.290107356 52.110917534, 4.289971487 52.11091747, 4.289802823 52.111038722, 4.289870472 52.111107785, 4.289488803 52.11132744, 4.28934145 52.11133073, 4.289188952 52.111436176, 4.289213701 52.111483598, 4.288836643 52.111735931, 4.290740113 52.112118061, 4.290892737 52.112194869, 4.290828918 52.112270581, 4.290627756 52.112317276, 4.290462252 52.112611806, 4.290486786 52.112657967, 4.290635469 52.11269312, 4.290696888 52.112662905, 4.291190991 52.112720596, 4.291243064 52.112769619, 4.291436613 52.112784542, 4.291533849 52.112730336, 4.292385378 52.112765807, 4.292413928 52.112818548, 4.292571553 52.112821324, 4.292634754 52.112764185, 4.293224103 52.112779858, 4.293353366 52.112832518, 4.293635695 52.112781842, 4.293886878 52.11316387, 4.294687501 52.11286938, 4.297390764 52.112376476, 4.299000601 52.112180246, 4.300612164 52.111870302, 4.300440097 52.111589531, 4.298928426 52.111200963, 4.29935071 52.110632524, 4.299029163 52.109724223, 4.298120679 52.109322137, 4.299678603 52.108127583, 4.30065714 52.107812953, 4.301719429 52.107090286, 4.302555515 52.10617718, 4.302382431 52.105777172, 4.302334778 52.105656563, 4.302313455 52.105549357, 4.302138046 52.105098622, 4.301935975 52.104642311, 4.301861368 52.104455998, 4.301811512 52.104304196, 4.301768347 52.104204473, 4.301561726 52.103513317, 4.301395016 52.102991146, 4.301259996 52.102429412, 4.301549621 52.102047187, 4.301448045 52.101896909, 4.301495272 52.101801614, 4.301702198 52.101726882, 4.3018115 52.101431461, 4.301477538 52.101184421, 4.301498759 52.101056501, 4.301512931 52.100943438, 4.301512119 52.100803295, 4.301479601 52.100469101, 4.301369857 52.100098861, 4.301236084 52.099879724, 4.301126308 52.099722408, 4.300548614 52.099153212, 4.299017627 52.099750472, 4.296287708 52.100798984, 4.294506518 52.101387219, 4.294285075 52.101466828, 4.294411316 52.101929587, 4.2946749 52.102966768, 4.294593458 52.103540653, 4.294054506 52.104192642, 4.29331609 52.105136923, 4.29353289 52.105697689, 4.291498948 52.10663039, 4.290387245 52.106754837, 4.289830819 52.106625986, 4.290944344 52.10560328, 4.29034091 52.105332996, 4.289160898 52.106239818, 4.288296127 52.105486795, 4.287876967 52.104728011, 4.286923507 52.104332691, 4.286512396 52.104421508, 4.286364971 52.104189507, 4.287483994 52.103610005, 4.289495308 52.102748398, 4.289295881 52.102493202, 4.289590599 52.101590252, 4.28888154 52.09998884, 4.288678254 52.099824807, 4.288067546 52.099634692, 4.287630163 52.099087477, 4.288421289 52.098542498, 4.288299782 52.098256377, 4.286811144 52.098371702, 4.286045791 52.097412862, 4.286858674 52.096705122, 4.286650767 52.095788378, 4.285529518 52.096658674, 4.283445234 52.098372072, 4.282143801 52.099398173, 4.281930438 52.099295578, 4.28040278 52.100516316, 4.279002183 52.101657455, 4.278429096 52.102098959, 4.278124622 52.101933726, 4.277359408 52.101730018, 4.276917834 52.101606668, 4.276429083 52.101540052, 4.27636786 52.101582964, 4.276211346 52.101566187, 4.276129611 52.101487298, 4.275854281 52.101462958, 4.275759891 52.101524885, 4.275026009 52.101481722, 4.274287748 52.101537412, 4.273547905 52.101254184, 4.273162463 52.100927902, 4.272931785 52.100800104, 4.272744251 52.100465993, 4.272533262 52.099973868, 4.272705996 52.099899472, 4.272577755 52.099785677, 4.272233195 52.099079871, 4.270325677 52.097687682, 4.270768679 52.097335569, 4.270270535 52.096800732, 4.270137007 52.096779913, 4.269413768 52.096077819, 4.26876141 52.095363358, 4.268343336 52.094872724, 4.267971832 52.094213067, 4.268114796 52.094138383, 4.26806885 52.094001072, 4.267913792 52.093995254, 4.267530035 52.09340283, 4.265658451 52.092332604, 4.265627332 52.09223524, 4.265446443 52.092129156, 4.265217731 52.091950346, 4.265090546 52.091833865, 4.265096442 52.09151163, 4.264838549 52.091028234, 4.264511048 52.09118282, 4.264318331 52.091159213, 4.261643313 52.089545448, 4.260270696 52.088660226, 4.258604414 52.087761772, 4.257151895 52.086896772, 4.25656139 52.086453597, 4.256487845 52.086101151, 4.255476538 52.0858431, 4.255061582 52.086398547, 4.2523815 52.087632374, 4.251764409 52.087679487, 4.251488746 52.087816554, 4.251343089 52.088004213, 4.251400604 52.088201851, 4.251590774 52.088345949, 4.251856577 52.088434885, 4.252083215 52.088442149, 4.252361005 52.088383854, 4.252516804 52.088284717, 4.252732792 52.08844526, 4.259535681 52.09370579, 4.258539492 52.094557612, 4.259562461 52.0950447, 4.258439158 52.096133966, 4.257602495 52.096659173, 4.257357369 52.096776149, 4.256925339 52.096861499, 4.257644402 52.097522505, 4.258237891 52.097957747, 4.258563504 52.098106439, 4.258914699 52.098162305, 4.259440169 52.09697252, 4.261106152 52.097297824, 4.26192131 52.096849493, 4.264214033 52.095702601, 4.262779764 52.094810916, 4.263925688 52.094114782, 4.265429474 52.094517505, 4.266372788 52.094969282, 4.266973619 52.095488905, 4.266973293 52.095638377, 4.267061982 52.095705313, 4.267234991 52.095672604, 4.269366519 52.097237491, 4.269330622 52.097320473, 4.269432063 52.097392698, 4.269619726 52.097362684, 4.269934046 52.097606861, 4.269939931 52.097727515, 4.27211762 52.099212025999996, 4.272457409 52.099796811, 4.272129668 52.099791617, 4.270652653 52.100561154, 4.270694364 52.100704132, 4.270521583 52.100783491, 4.270303266 52.100753723, 4.269765931 52.10104245, 4.269816687 52.101132709, 4.269709259 52.101188822, 4.26917581 52.101122613, 4.269123121 52.101147309, 4.268719439 52.10107261, 4.267183584 52.10189823, 4.263215139 52.099090901, 4.262185202 52.099271591, 4.262388579 52.099551877, 4.261820072 52.099836635, 4.262676939 52.100755806, 4.265675325 52.102782494, 4.266287021 52.10324491, 4.266869086 52.10359256, 4.268079767 52.104385629, 4.26870739 52.104858118, 4.268846961 52.105058038, 4.269000263 52.105203527, 4.269268391 52.105460596, 4.269698999 52.105763258, 4.27012072 52.10598916, 4.270399301 52.105945984, 4.270658484 52.105833743, 4.270959433 52.105453664, 4.271404616 52.105330787, 4.272043766 52.106118892, 4.272451684 52.106237761, 4.27284611 52.106526056, 4.272983242 52.10670408, 4.272738023 52.106908503, 4.273259128 52.106920206, 4.273596636 52.106932438, 4.273711944 52.106974084, 4.27415895 52.106985236, 4.274742569 52.10718208, 4.275394423 52.10749346, 4.276098002 52.107866115, 4.276702481 52.108292942, 4.27672747 52.108575064, 4.277061759 52.108401252, 4.277173306 52.108221961, 4.277581454 52.107482086, 4.278172666 52.107972997, 4.278120054 52.108046784, 4.279347858 52.108966874, 4.27943547 52.108954852, 4.279622354 52.109092446, 4.279572382 52.109202007, 4.280923047 52.110183127, 4.281082059 52.110193796, 4.281396154 52.110448814, 4.281357078 52.11061081, 4.282341294 52.111222076, 4.282760237 52.111337292, 4.283804105 52.111726579, 4.284107869 52.11172633, 4.284306684 52.111604541, 4.284330734 52.11144403, 4.287176814 52.109838955, 4.287624891 52.110122271, 4.287616064 52.110701142, 4.287726043 52.110762743, 4.287725999 52.110898023, 4.287611103 52.111036267, 4.287624061 52.11149634, 4.287834241 52.111652763, 4.288001858 52.11157372, 4.288599743 52.111700953, 4.290281097 52.11055475), (4.278725351 52.105008309, 4.278953699 52.104675032, 4.278881419 52.104150885, 4.278984734 52.104089169, 4.278961677 52.103909384, 4.278824875 52.103879298, 4.278697909 52.103507948, 4.278648249 52.103202538, 4.278460926 52.102815465, 4.279026998 52.102628843, 4.279233607 52.103149615, 4.279272806 52.103232985, 4.27937423 52.103247494, 4.279404805 52.103346037, 4.279287943 52.103621072, 4.279163923 52.103630073, 4.279119854 52.103743159, 4.279233949 52.103801832, 4.279299383 52.10393628, 4.279535539 52.103953744, 4.279561693 52.104120003, 4.279273711 52.104195229, 4.2792009 52.104247057, 4.279211793 52.104362358, 4.2793016 52.104402169, 4.279330302 52.10468704, 4.279501728 52.104763185, 4.279411184 52.105197713, 4.279335698 52.105246136, 4.279885613 52.105682134, 4.279499661 52.106067602, 4.279211232 52.106049646, 4.279164793 52.105925543, 4.279256857 52.105873887, 4.279172563 52.105834137, 4.278998962 52.105512327, 4.279048745 52.105390818, 4.278725351 52.105008309), (4.276702918 52.103861357, 4.275837355 52.104526105, 4.275585478 52.104445788, 4.275072798 52.104212764, 4.275111368 52.104165083, 4.275190964 52.104101781, 4.275300605 52.104071786, 4.275759958 52.104282589, 4.276365682 52.103773883, 4.276698393 52.103743831, 4.276702918 52.103861357), (4.257772996 52.090277128, 4.257542133 52.090107477, 4.257593354 52.089960101, 4.258116361 52.090000985, 4.258084472 52.090159185, 4.257772996 52.090277128), (4.274359514 52.105410973, 4.273957332 52.105243023, 4.273913274 52.105184557, 4.274015387 52.105065405, 4.274116219 52.105063355, 4.274561163 52.105276751, 4.274597318 52.105326135, 4.274471441 52.105420038, 4.274359514 52.105410973))

De API moet alle BAG adressen teruggeven die in de polygoon - begrensd door die polygoon coördinaten - liggen.

Deze functionaliteit wordt nu geboden door PDOK, maar vervalt binnenkort.

Acceptatiecriteria

Definition of done

melsk-r commented 3 months ago

This comment originally might have been created by someone else.

@Andre van der Leeden, kun jij de volgende vragen beantwoorden?

melsk-r commented 3 months ago

This comment originally might have been created by someone else.

@CathyDingemanse To answer your question:

  1. We don't have intersect information; we only have Polygon and Multi-polygon info
  2. precision is not that important, but 5 digits should be good, 0-2 is too less accurate.
melsk-r commented 3 months ago

This comment originally might have been created by someone else.

@NicoleKortoomsBAG weet jij of de oude PDOK service werkt met intersect?

melsk-r commented 3 months ago

This comment originally might have been created by someone else.

The coordinates mentioned above are probably in CRS ETRS89 (EPSG:4258). The precision or number of digits after the decimal points, depends on de CRS that is used. BAG registers geometry in RD (EPSG:28992) with a maximum of 3 digits, which means millimeter accuracy. In ETRS89 more digits are needed to achieve the same accuracy. So coordinates cannot be compared based on the number of digits without mentioning the CRS that is used.

melsk-r commented 3 months ago

This comment originally might have been created by someone else.

Bij de BAG 1.0 API was het mogelijk om één van: intersects, contains, of within te kiezen bij deze bevraging (post).

De API is uitgefaseerd, maar de info is momenteel nog via onderstaande link te bekijken. https://bag.basisregistraties.overheid.nl/restful-api#

melsk-r commented 3 months ago

This comment originally might have been created by someone else.

@CathyDingemanse Zoals Nicole al aangeeft was het met de oude specificatie mogelijk te kiezen uit de spatial operators: intersects, contains en within. Waarbij contains en within een deelverzameling leveren van intersects. Daarnaast was het mogelijk om met geometrie: Point, MultiPoint, LineString, MultiLineString, Polygon of MultiPolygon te zoeken. Zowel bij de spatial operator als bij de geometrie werd een oneOf constructie gebruikt. Dat is ook de juiste constructie, echter levert dit bij code generatie problemen op en daarom staat er in de HC common design decisions dat de oneOf constructie niet gebruikt mag worden in HC API specificaties. Misschien moet dat besluit worden heroverwegen, want oneOf is wel een constructie die je in sommige gevallen nodig hebt. Er omheen werken levert gekunstelde oplossingen, die meestal geen 100 % correcte oplossing en weer andere uitdagingen opleveren. Ik betwijfel daarom of code generatie hier nog wel het juiste middel is, als het daardoor lastiger wordt om de juiste, maar ook flexibele oplossingen te bieden.

melsk-r commented 3 months ago

This comment originally might have been created by someone else.

@CathyDingemanse Zoals Nicole al aangeeft was het met de oude specificatie mogelijk te kiezen uit de spatial operators: intersects, contains en within. Waarbij contains en within een deelverzameling leveren van intersects. Daarnaast was het mogelijk om met geometrie: Point, MultiPoint, LineString, MultiLineString, Polygon of MultiPolygon te zoeken. Zowel bij de spatial operator als bij de geometrie werd een oneOf constructie gebruikt. Dat is ook de juiste constructie, echter levert dit bij code generatie problemen op en daarom staat er in de HC common design decisions dat de oneOf constructie niet gebruikt mag worden in HC API specificaties. Misschien moet dat besluit worden heroverwegen, want oneOf is wel een constructie die je in sommige gevallen nodig hebt. Er omheen werken levert gekunstelde oplossingen, die meestal geen 100 % correcte oplossing en weer andere uitdagingen opleveren. Ik betwijfel daarom of code generatie hier nog wel het juiste middel is, als het daardoor lastiger wordt om de juiste, maar ook flexibele oplossingen te bieden.

@strijm, als we oneOf zouden heroverwegen, dan ben ik wel benieuwd hoe je dat ziet bij query parameters. Volgens mij is het namelijk niet mogelijk om oneOf te gebruiken voor query parameters. Persoonlijk weet ik niet of het een goed idee is om alleen voor zoeken met geometrie code generatie los te laten. Dit betekent namelijk dat andere consumers (die niet hoeven te zoeken met geometrie) ook met deze last zullen zitten. Ik denk niet dat we ze daarmee blij maken

melsk-r commented 3 months ago

This comment originally might have been created by someone else.

Bij de oude API werd er gezocht met een post en dus een request body.

melsk-r commented 3 months ago

This comment originally might have been created by someone else.

@CathyDingemanse In het voorbeeld staan 341 coördinaten, dit is al best veel. Geldt hier ook een maximum aantal coördinaten en zo ja hoeveel? Bv. 400? Geldt hier ook de maximale oppervlakte van 250.000 m2? Als er z-coördinaten worden opgegeven, is het dan akkoord dat we deze negeren, dus alleen met x en y coördinaat zoeken en geen foutmelding geven?

melsk-r commented 3 months ago

This comment originally might have been created by someone else.

In versie 1.5:

melsk-r commented 3 months ago

This comment originally might have been created by someone else.

@strijm deze user story gebruikt de parkeerzones in https://opendata.rdw.nl/Parkeren/Open-Data-Parkeren-GEOMETRIE-GEBIED/nsk3-v9n7

Ik zou zeggen dat het zoeken in ieder geval die data aan moet kunnen. Dus als daarin polygonen zitten met meer dan 350 coordinaten of een oppervlak meer dan 250.000 m2 moeten m.i. die maximale waarden worden opgehoogd.

@xiaochenzhang weet jij wat de/redelijke maximale waarden zijn voor de omvang van een contour om op te zoeken?