Comment généraliser les côtes?

12

J'ai un grand ensemble de points de données qui représentent essentiellement le littoral du monde. Je ne connais pas la résolution exacte mais je dirais que c'est dans le voisinage de 5-10m.

Imaginez un ensemble de points qui représentent un littoral déchiqueté. À une résolution de 1 m, nous voyons tous les détails et avons besoin de 50 points de données pour représenter correctement la côte, mais à une résolution de 10 km, la côte ressemble à une ligne droite et nous n'aurions besoin que de 2 points.

J'écris une application de cartographie qui nécessitera que les données évoluent des résolutions "pleine planète" aux résolutions "de rue". J'ai besoin d'aide pour réduire la résolution de mes points de données, puis la quantité de données pour des résolutions plus larges.

J'ai lu sur Vector-Tiling et je pense que ce sera la meilleure solution (je fais déjà quelque chose comme ça), cependant, aux basses résolutions, mon jeu de données est toujours énorme, ce qui signifie que le rendre prend un temps [relativement] long temps, alors que les hautes résolutions sont rapides parce que l'ensemble de données «efficace» est petit (sous-ensemble de l'ensemble).

J'essaie de déterminer comment prendre mon grand ensemble de données et en réduire l'échelle afin que les données de mosaïque de ma vue `` planète entière '' soient d'une taille gérable. Comment créer les sous-ensembles de tuiles à partir du plus grand ensemble de données complet?

Je suis heureux d'utiliser un outil, mais je préfère le faire moi-même dans le but d'apprendre comment cela se fait.

Stephan
la source
1
Avez-vous vérifié les réponses à gis.stackexchange.com/questions/6585/… ? Veuillez préciser si vous pensez que votre question est différente.
underdark
1
Il semble que la question devrait porter sur les côtes plutôt que sur les "points". À mesure que la résolution diminue, les petites îles devraient-elles disparaître? est-il acceptable que les côtes autour des îles serpentines maigres traversent?
Kirk Kuykendall
Si vous voulez simplement faire un travail passable et passer à autre chose , la réponse de @R Thiede est probablement le meilleur endroit pour commencer. Si vous voulez travailler sur le vrai défi, simplifier le dessin au trait sans perdre le sens des formes, consultez les questions connexes gis.stackexchange.com/questions/38/… et gis.stackexchange.com/questions/440/… .
matt wilkie

Réponses:

7

La façon dont vous allez résoudre ce problème dépend vraiment du cas et de l'importance de la topologie réelle pour vous (par rapport aux seuls éléments visuels / temps de rendu). Étant donné que votre objectif final est de généraliser les côtes, vous trouverez peut-être des idées sur la généralisation utiles.

Une approche utilise la mise en mémoire tampon, comme on le voit ici . J'ai également eu un problème similaire il y a quelque temps et j'ai détaillé ma solution ici .

En bref, vous pouvez utiliser des ensembles de données vectorielles distincts (ou au moins des géométries distinctes), généralisés à différents niveaux. Cela résout votre problème de base bien qu'il n'utilise pas de tuiles, mais bien sûr, vous pouvez toujours les utiliser si vous le souhaitez. Bien sûr, si vous allez diviser votre jeu de données en mosaïques basées sur une grille, assurez-vous de généraliser d'abord, ou vous vous retrouverez avec des écarts entre les mosaïques.

R Thiede
la source
+1 pour une réponse réfléchie. Bienvenue sur notre site, Rüdiger!
whuber
5

Vous devez préparer différentes versions généralisées de votre ensemble de données pour les niveaux de zoom «pleine planète» vers le bas pour un zoom rapproché.

Un algorithme de généralisation classique est l'algorithme Douglas-Peucker . Vous devrez d'abord connecter les points aux côtes si vous ne l'avez pas déjà fait.

obscur
la source
2
La bibliothèque GEOS possède des algorithmes Douglas-Peucker intégrés que vous pouvez utiliser si vous souhaitez coder vous-même. Cependant, vous pouvez envisager la topologie, auquel cas l'outil GRASS v.generalize peut également vous aider.
lagerratrobe
Salut @lagerratrobe. J'ai créé ce wiki communautaire de réponse, vous devriez donc pouvoir le modifier directement et y ajouter des solutions GEOS et GRASS.
underdark