Suite

Un moyen facile de créer des polygones de grille vectorielle ?


Nous utilisons actuellement MapInfo & MapBasic pour analyser les résultats des tests quotidiens à des fins de planification. Pour chaque test, le résultat exporté peut contenir des valeurs vides (disons 999, nous savons que Mapinfo n'a pas de valeurs NULL), nous avons donc décidé de conserver chaque résultat (par point valeurs) en faisant la moyenne et en nettoyant les résultats vides pour chaque paramètre à l'intérieur d'un carré (morceau de grille), de cette façon les résultats peuvent ne pas se répéter aux mêmes coordonnées et séparation des valeurs vides. (Ou vous pouvez dire obtenir des résultats par grille où chaque grille contient comment plusieurs points et joindre les résultats pour chaque cellule en faisant la moyenne)

Dans ce scénario, nous avons d'abord pensé à créer ces grilles via gridmaker.mbx qui est un outil gratuit pour Info carte, mais quand la zone est trop grande ou la taille de la cellule est trop petit ou même si le fabricant de grille n'a aucune chance d'impliquer notre algorithme comme dans ce qui suit

Nous abordons ce problème en créant des rectangles par des valeurs de 10 à 5000 mètres qui sont des tailles de cellules carrées, et insérons ces valeurs sur ces tests via des objets polygonaux MBR ou convexes en vérifiant si la cellule croise ces objets générés à partir du test.

Le problème commence ici même si nous traitons ces cellules, générant des résultats peut durer des semaines, des mois même.Donc, ma question est probablement dans le titre, je demande donc une manière différente et facile d'aborder ce problème.

Les solutions, les scénarios et les algorithmes auxquels vous répondez peuvent ne pas être résolus uniquement dans mapinfo, mais également dans d'autres outils.


Une approche alternative serait d'utiliser un moteur de base de données (peut être MapInfo) pour analyser vos données de résultat et générer un fichier qui pourrait ensuite être tracé dans MapInfo sous forme de grille vectorielle :

En supposant que les données de résultat ont un format comme le suivant : X, Y, Value…

  1. Décidez de la taille des cellules de votre grille vectorielle MapInfo
  2. Tronquer les coordonnées X et Y au nombre entier le plus proche de tailles de cellules
  3. Résumez (regroupez par) les colonnes X et Y tronquées générant les données récapitulatives dont vous avez besoin - moyenne, nombre, etc.
  4. Transférez le résumé dans MapInfo et tracez les points à partir des coordonnées tronquées - celles-ci doivent être tracées dans le coin inférieur gauche de chaque cellule de grille avec des données.
  5. Convertissez les points en carrés de cellules de grille à l'aide du code MapBasic suivant (peut être dans un MBX ou à partir de la fenêtre MapBasic) :

set coordsys table ResultPoints
mettre à jour ResultPoints set obj = mbr(createline(centroidx(obj), centroidy(obj), centroidx(obj) + GridCellSize, centroidx(obj) + GridCellSize))

(Vous devez remplacer la valeur de l'étape 1 dans la deuxième ligne à la place deGridCellSize)

Le résultat devrait être très similaire à ce que vous visiez à l'origine.


Vous pouvez augmenter la limite du nombre de cellules de 65000 à 1048576 et définir MAX_CELLS 20648881 dans le gridmaker.mbx.

Ou créez des grilles plus petites, puis fusionnez-les.

http://groups.google.com/group/mapinfo-l/browse_thread/thread/dd949e4374ad8a66