Conversion ASCII XYZ en MNT

On suppose dans cette procédure que nos données constituent un maillage régulier et qu’il n’est pas nécessaire de faire d’interpolation. Le fichier ASCII XYZ est composé de trois colonnes X, Y et Z, ex.

880000 6340000 828
880025 6340000 831
880050 6340000 833
880075 6340000 835

Procédure avec ArcGIS

1-Changer l’extension du fichier en .txt ou .csv

2- Modifier le fichier schema.ini

Plus d’infos sur ce fichier schema.ini à http://www.tectonics.caltech.edu/gi…

Ex. de fichier schema.ini correspondant au fichier input.csv ci-dessus : [input.csv]

ColNameHeader=False
Format=Delimited( )
Col1=X Double
Col2=Y Double
Col3=Z Double
  • si le fichier contient une ligne d’entête, on aura ColNameHeader=True
  • si le séparateur est la virgule on aura Format=CSVDelimited
  • si le séparateur est la tabulation on aura Format=TabDelimited
  • si le séparateur est l’espace on aura Format=Delimited( )
  • si le séparateur est | on aura Format=Delimited(|)
  • … etc avec d’autres séparateurs

Si le fichier n’est pas bien reconnu par ArcCatalog, il est possible que ce soit un problème de codage des caractères. On pourra le modifier en ajoutant la ligne suivante dans schema.ini :

CharacterSet=UNICODE

Changer UNICODE par le codage correct (ANSI, autre …)

3- Vérifier la reconnaissance du fichier par ArcCatalog

  • Vérifier dans ArcCatalog que votre fichier est bien reconnu. Pour cela votre fichier doit s’afficher dans l’onglet Aperçu.
  • Vérifier aussi que le type des champs est correct. Pour cela faire un clic droit sur le fichier et vérifier l’onglet Champs

4- Créer le shapefile de points

  • Pour créer les points, utiliser la fonction d’Arctoolbox « Outils 3D Analyst Depuis un fichier – ASCII 3D vers classe d’entités »

5-Convertir le shapefile de points en raster

  • Utiliser la fonction d’ArcToolbox « Outils de conversion – Vers raster – Entité vers raster »
  • Prendre le champ Shape.Z ou le champ Z comme valeur de raster
  • Définir la taille de cellule selon l’espacement des points en entrée.

Procédure avec Linux et GDAL

ex. conversion d’un fichier XYZ ASCII en TIF et assignation de la référence spatiale RGF93-Lambert93 (Code EPSG 2154)

gdal_translate -a_srs EPSG:2154 input.XYZ output.tif

en batch on pourra faire un script du type :

#!/bin/bash
#Ce script assigne le code EPSG saisi en paramètre aux images en sortie
# Jules Fleury, SIGeo/CEREGE, mars 2011

# saisir le code epsg en parametre

# Assign_SRS_to_TIF.sh

echo “Input spatial reference EPSG (exemple: for WGS84 enter 4326) : ”
read c_EPSG


for FILE in *.XYZ # modifier ici en cas d'autre format
do
BASE=`basename $FILE .XYZ` # modifier ici en cas d'autre format
NEWFILE=${BASE}_c.tif
gdal_translate -a_srs EPSG:$c_EPSG $FILE $NEWFILE
done

Avec Linux et GDAL : cas ou les données en entrée ne sont pas bien triées en X ou Y

solution prise ici : http://osgeo-org.1560.x6.nabble.com/gdal-dev-Opening-gridded-xyz-data-that-is-out-of-order-td5334341.html

if we obtain this kink of error:

> ERROR 1: Ungridded dataset: At line 4125001, change of Y direction

> gdalinfo failed – unable to open ‘DTM_swissALTI3D_XYZ.txt’.

You must sort the data beforehand

– the y position must be sorted properly (ASC or DESC)
Standard linux sort program:
sort -k2 -n -k1 input.xyz -o output_sort.xyz
(2nd column (y) as numeric, then first column (x) -o = output file
puis on relance gdal_translate
gdal_translate input.xyz output.tif -a_nodata -9999
Remplacer par la bonne valeur pour nodata
Si cette méthode ne fonctionne pas, on fera une interpolation comme ci-dessous

Avec Linux et GDAL : cas ou les données ne couvrent pas une dalle entière

On utilise la fonction d’interpolation de GDAL gdal_grid pour ne prendre pour chaque pixel qu’un seul point en entrée. La méthode consiste à premièrement créer un CSV, puis un VRT et utiliser ce fichier comme source de gdal_grid.

ex. gdal_grid -a nearest:radius1=1:radius2=1:nodata=-9999.0 -ot Float32 -a_srs EPSG:2154 -txe 1074000 1079000 -tye 6325000 6330000 -outsize 1000 1000 -l grid grid.vrt grid_out.tif

traitement en batch

1ère étape : conversion des XYZ en CSV avec création de VRT associé

ex. de script

#!/bin/bash

#Lecture de la référence spatiale
echo “Input spatial reference EPSG (exemple: for WGS84 enter 4326, for Lambert93 2154, for L2E 27572) : ”
read c_EPSG

#traitement des fichier en batch
for IFile in *.xyz # modifier ici en cas d’autre format
do
BASE=`basename $IFile .xyz`
OFile=${BASE}.csv

#ajout d’une ligne d’entête “X Y Z”
sed ‘1i\X Y Z’ $IFile > $OFile

#remplacement du caractère espace par une tabulation
TFile=”Temp”
tr ‘ ‘ ‘\t’ < $OFile > $TFile
mv $TFile $OFile


#création du fichier VRT
OFileVRT=${BASE}.vrt
echo "<OGRVRTDataSource>" > $OFileVRT
echo "    <OGRVRTLayer name=\"$BASE\">" >> $OFileVRT
echo "        <SrcDataSource>$OFile</SrcDataSource>" >> $OFileVRT
echo "        <GeometryType>wkbPoint</GeometryType>" >> $OFileVRT
echo "        <LayerSRS>EPSG:$c_EPSG</LayerSRS>" >> $OFileVRT
echo "        <GeometryField encoding=\"PointFromColumns\" x=\"X\" y=\"Y\" z=\"Z\"/>" >> $OFileVRT
echo "    </OGRVRTLayer>" >> $OFileVRT
echo "</OGRVRTDataSource>" >> $OFileVRT
done

2ème étape : conversion des VRT (avec leur CSV) en TIF

on utilise gdal_grid,ex. de script

#!/bin/bash

#Programme pour interpoler des fichiers de points XYZ stockés en CSV/VRT
#selon différents algorithmes et paramètres.
#le fichier grid en sortie est stocké en TIF
#puis rééchantilloné selon la résolution voulue.

#Jules Fleury – SIGéo/CEREGE
#avril 2013

#Lecture de la référence spatiale
echo “Input spatial reference EPSG (exemple: for WGS84 enter 4326, for Lambert93 2154, for L2E 27572) :”
read c_EPSG

#Traitement des fichiers en batch
for IFile in *.vrt # modifier ici en cas d’autre format
do
echo “Processing $IFile”
BASE=`basename $IFile .vrt`
OFile=${BASE}.tif
val_nodata=-9999 #valeur pour nodata

#Traitement du fichier en utilisant l’algorithme Nearest
gdal_grid -a nearest:radius1=0.5:radius2=0.5:nodata=$val_nodata -ot Float32 -a_srs EPSG:$c_EPSG  -l $BASE $IFile $OFile


#ré-échantillonage du fichier en sortie
ressize=10 #valeur de ré-échantillonage
OFileRes=${BASE}_$ressize.tif #fichier ré-échantilloné en sortie
gdalwarp -tr $ressize $ressize -r cubic $OFile $OFileRes
echo "Done"
done

Conversion fichier ASCII XYZ en Shapefile

On fera attention au séparateur de champs du fichier (virgule par défaut, tabulation, espace) et à la présence ou non d’une entête.

2 possibilités, en utilisant ArcGIS ou en utilisant OGR

Avec ArcGIS

1- Renommer votre fichier avec l’extension .csv ou .txt

2- Modifier le fichier schema.ini

Plus d’infos sur ce fichier schema.ini à http://www.tectonics.caltech.edu/gi…

Ex. de fichier schema.ini correspondant au fichier input.csv ci-dessus :

[input.csv]
ColNameHeader=False
Format=Delimited( )
Col1=X Double
Col2=Y Double
Col3=Z Double
  • si le fichier contient une ligne d’entête, on aura ColNameHeader=True
  • si le séparateur est la virgule on aura Format=CSVDelimited
  • si le séparateur est la tabulation on aura Format=TabDelimited
  • si le séparateur est l’espace on aura Format=Delimited( )
  • si le séparateur est | on aura Format=Delimited(|)
  • … etc avec d’autres séparateurs

Si le fichier n’est pas bien reconnu par ArcCatalog, on peut définir le codage des caractères en ajoutant la ligne suivante dans schema.ini : CharacterSet=UNICODE Changer UNICODE par le codage correct (ANSI, autre …)

3- Vérifier la reconnaissance du fichier par ArcCatalog

Vérifier dans ArcCatalog que votre fichier est bien reconnu. Pour cela votre fichier doit s’afficher dans l’onglet Aperçu. Vérifier aussi que le type des champs est correct. Pour cela faire un clic droit sur le fichier et vérifier l’onglet Champs

4- Créer le shapefile de points

Clic droit sur le fichier – Créer une classe d’entités – A partir d’une table XY – Renseigner les champs contenant les coordonnées X, Y et éventuellement Z ; renseigner aussi le système de coordonnées ; spécifier le fichier en sortie – Cliquer sur OK Vérifier votre shapefile.

Avec linux et OGR

Plus d’infos sur http://www.gdal.org/ogr/drv_csv.html et http://gdal.gloobe.org/ogr/formats/…

1- Renommer votre fichier avec l’extension .csv

2- Ajouter la ligne d’entête La ligne d’entête doit contenir les noms des colonnes séparés par le délimiteur. Ex.

X Y Z
869324.598 1783031.225 125.000
869781.445 1783057.845 126.000
869340.038 1782760.764 127.000

Pour cela, on peut soit éditer le fichier avec un éditeur de texte soit utiliser une commande sed dans le shell : Ex. (ajout d’une ligne ’’X Y Z’’ en début de fichier)

sed '1i\X Y Z' input.csv > output.csv

3- Remplacement du caractère Espace par le caractère Tabulation

OGR ne reconnaissant par le caractère Espace comme séparateur, il faut le remplacer par une tabulation ou une virgule. Pour cela on utiliser une commande shell :

tr ' ' '\t' <input.csv >>output.csv

on peut aussi utiliser sed, exemple :

sed 's/[ ]/\t/g' test3.csv > test3_b.csv

4- Lecture d’un CSV contenant des données spatiales

Il est possible d’extraire de l’information spatiale (points) d’un CSV ayant des colonnes X et Y en utilisant le driver VRT (http://www.gdal.org/ogr/drv_vrt.html ) Il faut écrire le fichier VRT associé (input.vrt) au fichier CSV (input.csv)

<OGRVRTDataSource>
<OGRVRTLayer name="input">
<SrcDataSource>input.csv</SrcDataSource>
<GeometryType>wkbPoint</GeometryType>
<LayerSRS>EPSG:27572</LayerSRS>
<GeometryField encoding="PointFromColumns" x="X" y="Y"/>
</OGRVRTLayer>
</OGRVRTDataSource>

et ogrinfo input.vrt renverra :

INFO: Open of `input.vrt'
using driver `VRT' successful.
1: input (Point)

5- Conversion du CSV en Shapefile

ogr2ogr output.shp input.vrt

On peut ajouter un filtre spatial sur les coordonnées en utilisant “-spat”

ogr2ogr -spat 822500 6245000 836500 6264000 -a_srs epsg:2154 Veran_T_total.shp T_total.vrt

Vecteurs GPS pour ArcGIS

Note préliminaire

ToolBox ArcGis réalisée pour ArcGIS 9.x et 10.0. Non testé avec les versions ultérieures

Construction des vecteurs GPS et des ellipses d’incertitudes.

Boîte à outil ArcGIS

Nécessite en entrée une table contenant au minimum : “Longitude” “Latitude” “Deplacement Est” “Déplacement Nord” ” Incertitude Est” “Incertitude Nord”

INSTALLATION :

- Ajouter la boîte à outils correspondant à votre version dans ArcToolbox

UTILISATION :

- Suivre les étapes 0 à 5 (Si vous disposez déja d’un tableau avec coordonnées projetées, vous pouvez sauter l’étape 1)

- à partir de l’étape 2, utiliser le fichier projeté

Exemple de résultat :

JPEG - 35.5 ko
Vecteurs GPS

TELECHARGEMENT Vecteurs_GPS

BeachBalls pour ArcGIS

Note préliminaire

Macro créée en VB en 2011 avec ArcGis 9.x et 10.0. Non testé avec les versions récentes

Représentation des mécanismes au foyer dans ArcGis

Macro VBA Beach Balls
Macro à installer dans ArcMap

Mécanismes au foyer des séismes en beach balls

Archive à télécharger: Beach_Ball

Programmation VB et VBA dans ArcGIS

Note préliminaire

ceci est quasiment obsolète et je le conserve pour mes propres utilisations.

Un utilisateur qui voudrait scripter ArcGis devra plutôt utiliser Python.

Introduction

L’intégration de VBA dans la version 10 n’est plus assurée. Nous vous conseillons de vous orienter vers des scripts Python pour la Toolbox.

Le document ci-dessous est une introduction à la programmation pour les versions inférieures ou égales à la 9.3.1


Dans de nombreux cas, il est nécessaire de développer soi-même une application qui n’est pas implémentée dans le SIG :

  1. pour une fonction qui n’existe pas en standard ;
  2. pour une opération fastidieuse en standard ;
  3. pour une opération répétitive.

Pour cela, nous utilisons les outils de développement associés à ArcGIS. VBA intégré jusqu’à la version 9.3.1, VB si l’on dispose d’un compilateur. Pour la version 10 et supérieur d’ArcGIS, le support de VBA n’est plus assuré et il faudra préférer utiliser le langage Python, notamment via les scripts ArcToolbox.

Cette documentation est une introduction au développement VBA et VB pour ArcGis.

Doc pdf

documentation et exemples dans ce fichier DOC_CODE_ARCGIS_v0