2010-12-08 57 views
0

J'ai une zone géographique qui a la forme d'un polygone. Je veux scanner cette zone avec des pas déterminés, disons ~ 25-30 mètres par pas. J'utilise le système lat/long. Tout ce dont j'ai besoin est un moyen de faire ce type de numérisation. L'efficacité est un plus.Analyse d'une zone géographique de type polygone

Aussi, Si vous pouvez m'aider à trouver un moyen de choisir des points sur la bordure de ce polygone avec les mêmes étapes mentionnées ci-dessus.

Remarque: Je ne me soucie pas de résultats 100% précis.

+0

Utilisez-vous une plate-forme particulière? – SingleNegationElimination

+0

J'utilise RoR avec Google maps – khelll

+0

Pour ceux qui ne connaissent pas RoR, que pouvez-vous faire déjà? (Vous posez cela comme un problème de maths, pas un sur les détails d'un outil.) – Beta

Répondre

1

On dirait que vous pouvez:

a) figure sur le rectangle de délimitation alignée sur l'axe de votre forme. Superposer cela avec une grille uniforme, tester chaque point de la grille pour être à l'intérieur de votre forme. Une approche naïve comme celle-ci est sous-optimale, j'en suis sûr, mais à moins que votre forme ne soit contrainte (est-elle (strictement) convexe? A-t-elle des trous?) Alors elle pourrait être la plus simple et la plus simple à implémenter.

b) Vous avez les points de fin pour chaque segment de ligne dans la limite de votre forme, il est assez simple de diviser chaque segment de ligne en intervalles réguliers.

Maintenant, vous avez des points spécifiés en latitude et longitude et des distances en mètres. Si le rectangle de délimitation est assez petit (c'est une question de précision, mais en règle générale, si votre boîte englobante est à moins de 30 minutes d'arc le long des deux côtés, c'est assez petit) lat, long comme coordonnées planes, transforme 30m en mesure angulaire (locale) - et garde à l'esprit que les mesures angulaires est-ouest et nord-sud peuvent ne pas être égales. Pour la plupart des parties peuplées de la Terre, ce sera assez précis. Pour une plus grande précision, vous devrez utiliser une sorte de projection, soit pour transformer vos coordonnées géographiques en coordonnées planes pour être en accord avec votre spécification de grille, soit et vice versa (ou les deux, puisque vos entrées sont un mélange de points géographiques et d'avion).

+0

Oui, ça marche: d'abord pour me soulager du problème des coordonnées, j'ai gardé toutes les opérations en utilisant le système de sphère. Deuxième chose, j'ai utilisé un pas d'une seconde. Après cela, j'ai suivi cette logique: 1-Déterminer la boîte englobante 2-Générer une grille d'emplacements dans la boîte englobante 3- Pour chaque point du rectangle, vérifier si elle appartient au polygone. J'ai trouvé un algorithme sympa pour vérifier si un emplacement appartient à un polygone ici: http://msdn.microsoft.com/en-us/library/cc451895.aspx. – khelll

+0

La chose cool est que tout le problème a été résolu en moins de 70 lignes de code! – khelll