Suite

Comment reprojeter tous les fichiers vectoriels d'un dossier vers une projection particulière en utilisant ogr2ogr ?

Comment reprojeter tous les fichiers vectoriels d'un dossier vers une projection particulière en utilisant ogr2ogr ?


Nous avons un dossier avec toutes sortes de fichiers vectoriels comme tab, shp, dxf. La plupart des fichiers sont dans une projection différente. Je voudrais convertir tous les fichiers en EPSG : 4326 et éventuellement les non-shapefiles en shapefiles.

j'ai utilisé la commande suivante

Pour %%f dans ("*.shp",".languette",".dxf") do ogr2ogr -t_SRS EPSG:4326 "ESRI Shapefile" "%~dpnf.shp" "%%f"

C'est dit… "Échec n'a pas pu récupérer la couche demandée".

Et comment enregistrer les fichiers de sortie dans un dossier séparé, pas dans le même dossier lui-même

Éditer:

j'ai joint l'image de l'erreur


Pour ce faire, un script est requis ; pas une commande. Comme je ne sais pas quel système d'exploitation vous avez, je vais utiliser un script bash dans mon système Linux (sous Windows l'équivalent est un fichier bat) et en utilisant uniquement des fichiers de formes.

#!/bin/bash for i in *.shp do ogr2ogr -t_srs EPSG:4326 out_data/$i $i done

Le script ci-dessus (nommé comme convertir et courir avec ./convertir) a bien fonctionné et il a projeté tous les fichiers de formes du répertoire actuel vers ESPG: 4326 et les a enregistrés avec le même nom dans le out_data répertoire (out_data doit être créé dans le répertoire où s'exécute le script).

L'image suivante est le répertoire de travail avec différents fichiers de formes et raster (inclus le script et out_data):

Annuaire out_data après avoir exécuté le script (les fichiers de formes ont été chargés dans QGIS avec la projection de vol activée à des fins de vérification). Il ne contient que des fichiers de formes avec la projection souhaitée.

Note d'édition:

Je ne connaissais pas la sintaxie des chauves-souris mais je l'ai trouvée. C'est précisément dans une commande de ligne. La sintaxie correcte est :

POUR %%i IN (*.shp) DO ogr2ogr -t_srs EPSG:4326 "out_data/%%i" "%%i%"

Le fichier bat ci-dessus (nommé comme convertir.bat et courir avec convertir) a bien fonctionné et il a projeté tous les fichiers de formes du répertoire actuel vers ESPG: 4326 et les a enregistrés avec le même nom dans le out_data répertoire (out_data doit être créé dans le répertoire où s'exécute le fichier bat).

Exécution réussie du fichier bat dans mon système Windows XP :


Projets et espaces de travail

Pour créer un projet simple, accédez à Fichier > Charger le fichier image.

Dans la boîte de dialogue Charger le(s) fichier(s) image(s), vous pouvez :

  1. Sélectionnez plusieurs fichiers en maintenant les touches Maj ou Ctrl enfoncées.
  2. Accéder à une liste des dossiers récemment consultés s'affiche dans la liste déroulante Aller au dossier. Vous pouvez également coller un chemin de fichier dans ce champ (ce qui mettra également à jour les boutons de dossier en haut de la boîte de dialogue).

Pour ajouter ultérieurement des calques d'images ou thématiques supplémentaires, accédez à Fichier > Ajouter une couche de données dans le menu principal.


Type de données GDAL¶

GDAL fournit un moyen très pratique de traiter les données raster dans de nombreux formats différents, non seulement en facilitant l'accès aux données, mais également en faisant abstraction des nuances et des complications des différents formats de fichiers. Dans GDAL, un fichier raster est composé des données raster réelles (c'est-à-dire les valeurs de chaque pixel de LAI que nous avons vu auparavant), et de quelques métadonnées. Les métadonnées sont des données qui décrivent quelque chose, et dans ce cas, il peut s'agir de la projection, de l'emplacement des coins et de l'espacement des pixels, etc.

La géotransformation¶

GDAL stocke des informations sur l'emplacement de chaque pixel à l'aide de GeoTransform. Le GeoTransform contient les coordonnées (dans certaines projections) du coin supérieur gauche (UL) de l'image (considéré comme le bordures du pixel dans le coin UL, pas au centre), l'espacement des pixels et une rotation supplémentaire. En connaissant ces chiffres, nous pouvons calculer facilement l'emplacement de chaque pixel dans l'image. Voyons comment cela fonctionne avec un exemple simple. Nous avons préparé un fichier GeoTIFF (GeoTIFF est le format de fichier le plus répandu pour les données d'OT) du produit de couverture terrestre MODIS pour le Royaume-Uni. Les données ont été extraites des fichiers HDF-EOS similaires au produit LAI que nous avons vu auparavant, et converties. Le fichier est lc_h17v03.tif . Nous allons ouvrir le fichier en Python et chercher à trouver un emplacement particulier.

Supposons que nous soyons intéressés à localiser Kinder Scout, une lande dans le parc national de Peak District. Ses coordonnées sont 1.871417W, 53.384726N. Dans la projection sinusoïdale entière MODIS, les coordonnées sont (-124114.3, 5936117.4) (vous pouvez utiliser le site Web du calculateur de tuiles MODLAND pour faire ce calcul vous-même).

Dans le code précédent, nous ouvrons le fichier (nous utilisons simplement le nom du fichier), puis interrogeons l'objet pour sa GeoTransform, que nous imprimons ensuite. Le tuple à 6 éléments comprend

  1. Le coin supérieur gauche vers l'Est coordonner (c'est-à-dire horizontal)
  2. L'espacement des pixels E-W
  3. La rotation (0 degrés si l'image est "North Up")
  4. Le haut à gauche au nord coordonner (c'est-à-dire verticale)
  5. La rotation (0 degrés)
  6. L'espacement des pixels N-S, négatif car nous compterons à partir du coin UL

Nous avons également vu que le jeu de données est de taille 2400x2400, en utilisant RasterXSize et RasterYSize . Le but est de trouver le numéro de pixel ((i,j), le i,j < 2400) qui correspond à Kinder Scout. Pour ce faire, nous utilisons les calculs suivants :

Le nombre de pixels est donc un nombre à virgule flottante, que nous pourrions avoir besoin d'arrondir sous forme d'entier. Tracez l'intégralité de la carte raster (avec une valeur minimale de 0 pour ignorer l'océan) à l'aide de plt.imshow et tracez l'emplacement de Kinder Scout à l'aide de plt.plot . Nous utiliserons également plt.annotate pour ajouter une étiquette avec une flèche :

Essayez-le dans d'autres endroits !¶

Trouvez la longitude et la latitude de certains lieux d'intérêt dans les îles britanniques (à l'ouest de Greenwich !) et à l'aide du calculateur de tuiles MODLAND MODIS et de la géotransformation, répétez l'expérience ci-dessus. Notez que la calculatrice MODIS calcule à la fois les coordonnées projetées dans la projection sinusoïdale MODIS, ainsi que le nombre de pixels, c'est donc un moyen utile de vérifier si vous avez obtenu le bon résultat.
Nom du parc Longitude [deg] Latitude [deg]
Parc national de Dartmoor -3.904 50.58
Nouveau parc national forestier -1.595 50.86
Parc national d'Exmoor -3.651 51.14
Parc national de la côte du Pembrokeshire -4.694 51.64
Parc national des Brecon Beacons -3.432 51.88
Parc national de la côte du Pembrokeshire -4.79 51.99
Broads Norfolk et Suffolk 1.569 52.62
Parc national de Snowdonia -3.898 52.9
Parc national du Peak District -1.802 53.3
Parc national des vallées du Yorkshire -2.157 54.23
Parc national des landes du Yorkshire du Nord -0.8855 54.37
Parc national du district des lacs -3.084 54.47
Parc forestier de Galloway -4.171 54.87
Parc national de Northumberland -2.228 55.28
Parc national du Loch Lomond et des Trossachs -4.593 56.24
Parc forestier de Tay -4.025 56.59
Parc national des Cairngorms -3.545 57.08

ENVI  ne prend actuellement en charge que NPP VIIRS lors de la création de GLT dans l'ENVI API.

UNE pile de calques est un raster unique qui contient des canaux géoréférencés de différents rasters sources. Une pile de couches garantit que tous les rasters source ont les mêmes dimensions, tailles de pixels et référence spatiale, afin qu'ils puissent être utilisés pour l'intercomparaison et le traitement d'images. Utilisez ENVILayerStackRaster ou ENVIBuildLayerStackTask pour construire un raster empilé en couches. Les rasters source peuvent être des groupes de canaux au sein d'un jeu de données métaaspectral (tel que Landsat, ASTER ou Sentinel-2) ou ils peuvent provenir de différents fichiers raster.


Comment reprojeter tous les fichiers vectoriels d'un dossier vers une projection particulière en utilisant ogr2ogr ? - Systèmes d'information géographique

Les éléments sur une carte font référence aux emplacements réels des objets qu'ils représentent dans le monde réel. Les positions des objets sur la surface sphérique de la Terre sont mesurées en degrés de latitude et de longitude, également appelées coordonnées géographiques . Bien que la latitude et la longitude puissent localiser des positions exactes à la surface de la terre, ce ne sont pas des unités de mesure uniformes, ce n'est que le long de l'équateur que la distance représentée par un degré de longitude se rapproche de la distance représentée par un degré de latitude. Pour surmonter les difficultés de mesure, les données sont souvent transformées du système de coordonnées géographiques tridimensionnelles à la surface plane bidimensionnelle dans un système de coordonnées projetées . Les systèmes de coordonnées projetées décrivent la distance à partir d'une origine (0,0) le long de deux axes distincts : un axe x horizontal représentant est-ouest et un axe y vertical représentant nord-sud.

Parce que la terre est ronde et que les cartes sont plates, obtenir des informations de la surface incurvée à une surface plate implique une formule mathématique appelée projection cartographique . Une projection cartographique transforme la latitude et la logitude en coordonnées x,y dans un système de coordonnées projetées.

Les emplacements sont exprimés en latitude et longitude sur le globe et en coordonnées x,y sur une carte.

Ce processus d'aplatissement de la terre provoque des distorsions dans une ou plusieurs des propriétés spatiales suivantes : distance, surface, forme et direction. Aucune projection ne peut préserver toutes ces propriétés et, par conséquent, toutes les cartes plates sont déformées dans une certaine mesure. Heureusement, vous pouvez choisir parmi de nombreuses projections cartographiques différentes. Chacun se distingue par son aptitude à représenter une portion et une quantité particulières de la surface de la terre et par sa capacité à préserver la distance, la zone, la forme ou la direction. Certaines projections cartographiques minimisent la distorsion d'une propriété au détriment d'une autre, tandis que d'autres s'efforcent d'équilibrer la distorsion globale. En tant que cartographe, vous pouvez décider quelles propriétés sont les plus importantes et choisir une projection qui convient à vos besoins.

Affichage du monde à l'aide de la projection sinusoïdale (à gauche) et de la projection de Robinson (à droite).

  • Vous souhaitez effectuer des mesures précises à partir de votre carte et vous assurer que les options d'analyse spatiale calculent correctement la distance. La latitude/longitude est un bon système pour stocker des données spatiales mais pas très bon pour visualiser, interroger ou analyser des cartes. Les degrés de latitude et de longitude ne sont pas des unités de mesure cohérentes pour la surface, la forme, la distance et la direction.
  • Vous créez une carte dans laquelle vous souhaitez conserver une ou plusieurs de ces propriétés : zone, forme, distance et direction.
  • Vous créez une carte à petite échelle telle qu'une carte nationale ou mondiale. Avec une carte à petite échelle, votre choix de projection cartographique détermine l'apparence générale de la carte. Par exemple, avec certaines projections, les lignes de latitude et de longitude apparaîtront courbes tandis que d'autres apparaîtront droites.
  • Votre organisation impose l'utilisation d'un système de coordonnées projetées particulier pour toutes les cartes.
  • Quelles propriétés spatiales souhaitez-vous conserver ?
  • Où est la zone que vous cartographiez ? Vos données se trouvent dans une région polaire ? Une région équatoriale ?
  • Quelle est la forme de la zone que vous cartographiez ? Est-ce carré ? Est-il plus large dans le sens est-ouest ?
  • Quelle est la taille de la zone que vous cartographiez ? Sur les cartes à grande échelle, telles que les plans de rues, la distorsion peut être négligeable car votre carte ne couvre qu'une petite partie de la surface de la terre. Sur les cartes à petite échelle, où une petite distance sur la carte représente une distance considérable sur la terre, la distorsion peut avoir un impact plus important, surtout si vous utilisez votre carte pour comparer ou mesurer la forme, la superficie ou la distance.
  • Les projections de surface égale préservent la surface. De nombreuses cartes thématiques utilisent une projection de surface égale. Les cartes des États-Unis utilisent couramment la projection Albers Equal Area Conic.
  • Les projections conformes préservent la forme et la zone utiles pour les cartes de navigation et les cartes météorologiques. La forme est préservée pour les petites zones, mais la forme d'une grande zone comme un continent sera considérablement déformée. Les projections coniques conformes de Lambert et de Mercator sont des projections conformes courantes.
  • Les projections équidistantes préservent la distance mais aucune projection ne peut préserver les distances de tous les points à tous les autres points. Au lieu de cela, la distance peut être considérée comme vraie d'un point (ou de quelques points) à tous les autres points ou le long de tous les méridiens ou parallèles. Si vous comptez utiliser votre carte pour rechercher des entités situées à une certaine distance d'autres entités, vous devez utiliser une projection cartographique équidistante.
  • Les projections azimutales préservent la direction d'un point à tous les autres points. Cette qualité peut être combinée avec des projections à aire égale, conformes et équidistantes, comme dans les projections Lambert Equal Area Azimuthal et les projections azimutales équidistantes.
  • D'autres projections minimisent la distorsion globale mais ne préservent aucune des quatre propriétés spatiales de la zone, de la forme, de la distance et de la direction. La projection de Robinson, par exemple, n'est ni à surface égale ni conforme, mais elle est esthétiquement agréable et utile pour la cartographie générale.

Les projections dans ArcIMS sont gérées par ArcIMS Spatial Server. Trois éléments de projection sont utilisés pour récupérer les données dans le bon système de coordonnées projetées :

  • Liste des systèmes de coordonnées projetés [Trié par ID de projection] [Trié par nom]
  • Liste des systèmes de coordonnées géographiques [Trié par ID de projection] [Trié par nom]
  • Liste des transformations de données [Trié par ID de projection] [Trié par nom]
  • Données vectorielles, y compris les fichiers de formes, les couvertures dans ArcSDE pour les couvertures et les couches ArcSDE. Avec les données vectorielles, si COORDSYS n'est pas inclus avec la couche, ArcIMS Spatial Server lit tout fichier *.prj associé à un fichier de formes ou à une couverture ou à la table de références spatiales dans ArcSDE.
  • Imagerie comprenant des images dans un répertoire et des images dans ArcSDE.
  • Couches d'acétate lorsque l'attribut units="database" est utilisé dans OBJECT.

FEATURECOORDSYS est utilisé pour spécifier un système de coordonnées commun dans un service ArcIMS vers lequel chaque couche doit être transformée. Dans un service ArcIMS, FEATURECOORDSYS représente la projection globale et peut être considéré comme le système de coordonnées par défaut. Ce système de coordonnées peut être différent du système de coordonnées de n'importe laquelle des couches.

Les demandes sans éléments de projection adressées à un service ArcIMS recevront des données dans le système de coordonnées par défaut du service. Une requête peut remplacer le service FEATURECOORDSYS par son propre FEATURECOORDSYS. Par exemple, si un service est à Robinson et qu'une demande inclut un FEATURECOORDSYS de Mollweide, le serveur spatial ArcIMS renvoie les données à Mollweide.

Lorsque FEATURECOORDSYS est présent, les unités de la carte sont calculées automatiquement par le serveur spatial ArcIMS. Si MAPUNITS est présent, il est ignoré. Il est important d'avoir les bonnes unités de carte pour s'assurer que les dépendances d'échelle dans LAYER, SCALEDEPENDENTRENDERER et OBJECT sont correctement calculées.

FILTERCOORDSYS est utilisé pour spécifier le système de coordonnées du client demandeur. Tout comme COORDSYS, FILTERCOORDSYS peut être considéré comme une métadonnée, cette fois pour le client. Dans la requête, les coordonnées dans les étendues et les filtres spatiaux sont dans le système de coordonnées de FILTERCOORDSYS.

FILTERCOORDSYS doit être inclus dans un fichier de configuration de carte si FEATURECOORDSYS est présent. Dans le service, FILTERCOORDSYS et FEATURECOORDSYS doivent avoir le même ID ou la même valeur de chaîne. Dans les requêtes, les deux éléments peuvent avoir des valeurs différentes.

Cette section suivante traite des différents scénarios d'utilisation des éléments de projection. Une remarque importante : les clients ArcIMS ne prennent pas en charge les projections. Toutes les projections doivent être gérées par ArcIMS Spatial Server. De plus, lors de l'utilisation des visionneuses ArcIMS, FILTERCOORDSYS et FEATURECOORDSYS doivent avoir le même ID. La visionneuse HTML ArcIMS peut être personnalisée pour s'adapter à différents ID pour FEATURECOORDSYS et FILTERCOORDSYS. Les visionneuses Java ArcIMS ne peuvent pas être personnalisées de cette façon.

L'exemple ci-dessous montre un fichier de configuration de carte qui n'utilise pas FILTERCOORDSYS ou FEATURECOORDSYS mais utilise COORDSYS pour les couches. Les deux couches sont toutes deux des couches de fichiers de formes mondiales. L'un est dans le monde Mollweide (id="54009") et l'autre est dans le monde Robinson (id="54030"). N'oubliez pas que si un fichier de formes est associé à un fichier *.prj, COORDSYS n'a pas besoin d'être inclus. Si ni un fichier *.prj ni COORDSYS n'est présent, la couche n'est pas projetée.

Utilisation de COORDSYS dans un fichier de configuration de carte :
<?xml version="1.0" encodage="UTF-8"?>
<ARCXML version="1.1">
<CONFIG>
<ENVIRONNEMENT>
<LOCALE country="US" language="en" variant="" />>
<UIFONT color="0,0,0" name="Arial" size="12" style="régulier" //gt
</ENVIRONNEMENT>
<MAP>
<PROPRIÉTÉS>
<ENVELOPE minx="-14628440.851850007" miny="-9020047.848073646" maxx="15705351.712200116" maxy="8748562.401522137" name="Initial_Extent" />
<MAPUNITS units="mètres" />
</PROPRIÉTÉS>
<ESPACES DE TRAVAIL>
<SHAPEWORKSPACE name="shp_ws-12" directory="c:data" //gt
</ESPACES DE TRAVAIL>
<LAYER type="featureclass" name="Océan" visible="true" >
<DATASET name="WORLD30" type="polygone" workspace="shp_ws-12" />
<SIMPLERENDER>
<SIMPLEPOLYGONSYMBOL fillcolor="240,255,255" />
</SIMPLERENDERER>
</CALQUE>
<LAYER type="featureclass" name="Robinson" visible="true" >
<DATASET name="cntry94_Robinson" type="polygone" workspace="shp_ws-12" />
<COORDSYS />
<SIMPLERENDER>
<SIMPLEPOLYGONSYMBOL filltype="solid" fillcolor="0,153,102" />
</SIMPLERENDERER>
</CALQUE>
<LAYER type="featureclass" name="Mollweide" visible="true" >
<DATASET name="Cntry94_Mollweide" type="polygone" workspace="shp_ws-12" />
<COORDSYS />
<SIMPLERENDERER>
<SIMPLEPOLYGONSYMBOL filltransparency="0.0" boundwidth="3" boundcolor="27,27,127" />
</SIMPLERENDERER>
</CALQUE>
</MAP>
</CONFIG>
</ARCXML>

Pour afficher une carte, une requête GET_IMAGE peut être effectuée auprès de ce service d'imagerie. La requête suivante ne comprend aucun élément de projection.

Requête GET_IMAGE sans éléments de projection :
<?xml version="1.0" encodage="UTF-8" ?>
<ARCXML version="1.1">
<DEMANDE>
<GET_IMAGE>
<PROPRIÉTÉS>
</PROPRIÉTÉS>
</GET_IMAGE>
</DEMANDE>
</ARCXML>

Dans l'image renvoyée, les deux calques ne se superposent pas correctement car ils ne sont pas dans le même système de coordonnées.


Dans la prochaine requête GET_IMAGE, FEATURECOORDSYS et FILTERCOORDSYS sont inclus et sont définis sur World Sinusoidal, qui a un id="54008" .

Requête GET_IMAGE utilisant FILTERCOORDSYS et FEATURECOORDSYS :
<?xml version="1.0" encodage="UTF-8" ?>
<ARCXML version="1.1">
<DEMANDE>
<GET_IMAGE>
<PROPRIÉTÉS>
<FILTERCOORDSYS />
<FEATURECOORDSYS />
</PROPRIÉTÉS>
</GET_IMAGE>
</DEMANDE>
</ARCXML>

Dans l'image renvoyée, les deux couches sont alignées dans la projection sinusoïdale.


Le dernier exemple GET_IMAGE a fonctionné correctement car les deux couches ont des systèmes de coordonnées avec des étendues X et Y minimales et maximales similaires. En réalité, une ENVELOPPE est normalement incluse dans la demande. Les coordonnées utilisées dans ENVELOPE et à l'intérieur de SPATIALFILTER doivent être dans le système de coordonnées de FILTERCOORDSYS. Dans l'exemple suivant, une ENVELOPPE est incluse dans la demande. Les unités cartographiques sont calculées par ArcIMS Spatial Server en fonction de l'ID sélectionné pour FEATURECOORDSYS. Par conséquent, MAPUNITS n'est pas requis dans les demandes.

Requête GET_IMAGE avec ENVELOPE :
<?xml version="1.0" encodage="UTF-8" ?>
<ARCXML version="1.1">
<DEMANDE>
<GET_IMAGE>
<PROPRIÉTÉS>
<ENVELOPPE minx="-14628440.851850007" miny="-9020047.848073646" maxx="15705351.712200116" maxy="8748562.401522137" />
<FILTERCOORDSYS />
<FEATURECOORDSYS />
</PROPRIÉTÉS>
</GET_IMAGE>
</DEMANDE>
</ARCXML>

Avec la demande ci-dessus, l'ENVELOPPE retournée est garantie d'être correcte.

Réponse IMAGE avec ENVELOPPE :
<?xml version="1.0" encodage="UTF8"?>
<ARCXML version="1.1">
<RÉPONSE>
<IMAGE>
<ENVELOPPE minx="-14628440.85185" miny="-11510914.9347945" maxx="15705351.7122001" maxy="11239429.488243" />
<OUTPUT file="C:ArcIMSoutputproj_paper_MYCOMPUTER79217360.jpg" url="http://mycomputer.esri.com/output/proj_paper_MYCOMPUTER79217360.jpg" />
</IMAGE>
</RÉPONSE>
</ARCXML>

L'image renvoyée est la même que l'image précédente.

FILTERCOORDSYS et FEATURECOORDSYS peuvent être inclus dans le fichier de configuration de la carte, comme illustré dans l'exemple suivant. Pour les deux éléments, l'ID du système de coordonnées est défini sur World Sinusoidal ( id="54008" ). Bien que MAPUNITS soit inclus, il est ignoré lorsque FEATURECOORDSYS est présent.

Utilisation de FILTERCOORDSYS ET FEATURECOORDSYS dans un fichier de configuration de carte :
<?xml version="1.0" encodage="UTF-8"?>
<ARCXML version="1.1">
<CONFIG>
<ENVIRONNEMENT>
<LOCALE country="US" language="en" variant="" />>
<UIFONT color="0,0,0" name="Arial" size="12" style="regular" />
</ENVIRONNEMENT>
<MAP>
<PROPRIÉTÉS>
<ENVELOPE minx="-14628440.851850007" miny="-9020047.848073646" maxx="15705351.712200116" maxy="8748562.401522137" name="Initial_Extent" />
<MAPUNITS units="mètres" />
<FEATURECOORDSYS />
<FILTERCOORDSYS />
</PROPRIÉTÉS>
<ESPACES DE TRAVAIL>
<SHAPEWORKSPACE name="shp_ws-12" directory="c:data" //gt
</ESPACES DE TRAVAIL>
<LAYER type="featureclass" name="Océan" visible="true" >
<DATASET name="WORLD30" type="polygone" workspace="shp_ws-12" />
<SIMPLERENDERER>
<SIMPLEPOLYGONSYMBOL fillcolor="240,255,255" />
</SIMPLERENDERER>
</CALQUE>
<LAYER type="featureclass" name="Robinson" visible="true" >
<DATASET name="cntry94_Robinson" type="polygone" workspace="shp_ws-12" />
<COORDSYS />
<SIMPLERENDERER>
<SIMPLEPOLYGONSYMBOL filltype="solid" fillcolor="0,153,102" />
</SIMPLERENDERER>
</CALQUE>
<LAYER type="featureclass" name="Mollweide" visible="true" >
<DATASET name="Cntry94_Mollweide" type="polygone" workspace="shp_ws-12" />
<COORDSYS />
<SIMPLERENDERER>
<SIMPLEPOLYGONSYMBOL filltransparency="0.0" boundwidth="3" boundcolor="27,27,127" />
</SIMPLERENDERER>
</CALQUE>
</MAP>
</CONFIG>
</ARCXML>

Encore une fois, une requête GET_IMAGE sans éléments de projection est faite au service.

Requête GET_IMAGE sans éléments de projection :
<?xml version="1.0" encodage="UTF-8" ?>
<ARCXML version="1.1">
<DEMANDE>
<GET_IMAGE>
<PROPRIÉTÉS>
</PROPRIÉTÉS>
</GET_IMAGE>
</DEMANDE>
</ARCXML>

Cette fois dans l'image renvoyée, les deux couches se superposent dans la projection sinusoïdale, la valeur par défaut du service.


Quel que soit le système de coordonnées du service, une demande peut toujours inclure des éléments de projection qui remplacent le service. Si vous souhaitez connaître la projection d'un service auquel vous accédez, vous pouvez envoyer une requête GET_SERVICE_INFO pour savoir quels FEATURECOORDSYS et FILTERCOORDSYS sont utilisés.

Requête GET_SERVICE_INFO :
<?xml version="1.0" encodage="UTF-8"?>
<ARCXML version="1.1">
 <DEMANDE>
  <GET_SERVICE_INFO fields="false" envelope="false" renderer="false" extensions="false" />
 </DEMANDE>
</ARCXML>

La réponse inclut FILTERCOORDSYS et FEATURECOORDSYS s'ils sont présents dans le service ArcIMS.

  • FEATURECOORDSYS - sur quoi vous voulez projeter les résultats.
  • FILTERCOORDSYS - la projection actuelle du client.
  • ENVELOPPE et coordonnées géométriques - Dans la requête, les valeurs doivent être dans le système de coordonnées de la projection FILTERCOORDSYS. Dans la réponse, ENVELOPE et les coordonnées géométriques sont dans le système de coordonnées de la projection FEATURECOORDSYS.

Requête GET_IMAGE à l'aide de FILTERCOORDSYS et FEATURECOORDSYS :
<?xml version="1.0" encodage="UTF-8" ?>
<ARCXML version="1.1">
<DEMANDE>
<GET_IMAGE>
<PROPRIÉTÉS>
<ENVELOPPE minx="-180" miny="-90" maxx="180" maxy="90" //gt
<FILTERCOORDSYS />
<FEATURECOORDSYS />
</PROPRIÉTÉS>
</GET_IMAGE>
</DEMANDE>
</ARCXML>

Dans l'image renvoyée, les deux couches sont alignées en coordonnées géographiques.

Supposons maintenant que votre visionneuse client soit actuellement en coordonnées géographiques ("4326"), mais que vous souhaitiez une carte renvoyée en Robinson ("54030"). Dans ce scénario, FILTERCOORDSYS, la projection actuelle du client, est défini sur id="4326" . Les coordonnées de la demande, telles que celles de l'ENVELOPPE, doivent également être en coordonnées géographiques.

FEATURECOORDSYS définit le système de coordonnées de la carte renvoyée au client. Dans ce cas, FEATURECOORDSYS est défini sur id="54030" .

Requête GET_IMAGE utilisant FILTERCOORDSYS et FEATURECOORDSYS avec ENVELOPE en degrés décimaux :
<?xml version="1.0" encodage="UTF-8" ?>
<ARCXML version="1.1">
<DEMANDE>
<GET_IMAGE>
<PROPRIÉTÉS>
<ENVELOPPE minx="-180" miny="-90" maxx="180" maxy="90" //gt
<FILTERCOORDSYS />
<FEATURECOORDSYS />
</PROPRIÉTÉS>
</GET_IMAGE>
</DEMANDE>
</ARCXML>

Dans la réponse, l'ENVELOPPE est en coordonnées Robinson.

Réponse IMAGE avec ENVELOPE en coordonnées Robinson :
<?xml version="1.0" encodage="UTF8"?>
<ARCXML version="1.1">
<RÉPONSE>
<IMAGE>
<ENVELOPPE minx="-16986727.8564406" miny="-12740045.8923304" maxx="16986727.8564406" maxy="12740045.8923304" />
<OUTPUT file="C:ArcIMSoutputproj_paper_MYCOMPUTER79217360.jpg" url="http://mycomputer.esri.com/output/proj_paper_MYCOMPUTER79217360.jpg" />
</IMAGE>
</RÉPONSE>
</ARCXML>

Dans l'image renvoyée, les deux calques sont maintenant en Robinson.

Un système de coordonnées peut être défini de deux manières : à l'aide d'un ID de système de coordonnées prédéfini ou d'une chaîne de définition de système de coordonnées. Les ID prédéfinis sont un moyen rapide de référencer un système de coordonnées en utilisant un seul numéro de référence. La chaîne de définition du système de coordonnées utilise une chaîne pour décrire tous les paramètres d'une projection. L'avantage d'utiliser la chaîne de définition est que les paramètres de la chaîne peuvent être modifiés.

La chaîne de définition du système de coordonnées pour World Robinson est :

Monde Robinson,54030
PROJCS["World_Robinson",GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137,298.257223563]],PRIMEM["Greenwich",0],UNIT["Degré",0.017453292519943295]],PROJECTION ["Robinson"],PARAMETER["False_Easting",0],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",0],UNIT["Meter",1]]

Dans les exemples jusqu'à présent, seuls les identifiants ont été utilisés. Ces ID peuvent être remplacés par la chaîne de définition. Dans l'exemple suivant, un service d'imagerie inclut la chaîne de définition de World Robinson pour FEATURECOORDSYS et FILTERCOORDSYS. Notez que les guillemets ("") dans la chaîne de définition doivent être échappés avec &quot .

PROJETS[&quotMonde_Robinson&quot,GEOGCS[&quotGCS_WGS_1984&quot,DONNÉES[&quotD_WGS_1984&quot,SPHÉROÏDE[&quotWGS_1984&quot,6378137,298.257223563]],PRIMEM[&quotGreenwich&quot,0],UNIT[&quotDegré&quot,0.017453292519943295]],PROJECTION[&quotRobinson&quot],PARAMÈTRE[&quotFalse_Easting&quot,0],PARAMÈTRE[&quotFalse_Northing&quot,0],PARAMÈTRE[&quotCentral_Meridian&quot,0],UNITÉ[&quotMètre&quot,1]]

Utilisation d'une chaîne de définition de projection pour FILTERCOORDSYS ET FEATURECOORDSYS dans un fichier de configuration de carte :
<?xml version="1.0" encodage="UTF-8"?>
<ARCXML version="1.1">
<CONFIG>
<ENVIRONNEMENT>
<LOCALE country="US" language="en" variant="" />>
<UIFONT color="0,0,0" name="Arial" size="12" style="regular" />
</ENVIRONNEMENT>
<MAP>
<PROPRIÉTÉS>
<ENVELOPE minx="-14628440.851850007" miny="-9020047.848073646" maxx="15705351.712200116" maxy="8748562.401522137" name="Initial_Extent" />
<MAPUNITS units="mètres" />
& LtFEATURECOORDSYS string = "PROJCS [& ampquotWorld_Robinson & ampquot, GEOGCS [& ampquotGCS_WGS_1984 & ampquot, DONNÉE [& ampquotD_WGS_1984 & ampquot, SPHEROID [& ampquotWGS_1984 & ampquot, 6378137,298.257223563]], PRIMEM [& ampquotGreenwich & ampquot, 0], UNITÉ [& ampquotDegree & ampquot, 0,017453292519943295]], PROJECTION [& ampquotRobinson & ampquot], PARAMETER [& ampquotFalse_Easting & ampquot, 0],PARAMETER[&quotFalse_Northing&quot,0],PARAMETRE[&quotCentral_Meridian&quot,0],UNIT[&quotMeter&quot,1]]" />
& LtFILTERCOORDSYS string = "PROJCS [& ampquotWorld_Robinson & ampquot, GEOGCS [& ampquotGCS_WGS_1984 & ampquot, DONNÉE [& ampquotD_WGS_1984 & ampquot, SPHEROID [& ampquotWGS_1984 & ampquot, 6378137,298.257223563]], PRIMEM [& ampquotGreenwich & ampquot, 0], UNITÉ [& ampquotDegree & ampquot, 0,017453292519943295]], PROJECTION [& ampquotRobinson & ampquot], PARAMETER [& ampquotFalse_Easting & ampquot, 0],PARAMETER[&quotFalse_Northing&quot,0],PARAMETRE[&quotCentral_Meridian&quot,0],UNIT[&quotMeter&quot,1]]" />
</PROPRIÉTÉS>
<ESPACES DE TRAVAIL>
<SHAPEWORKSPACE name="shp_ws-12" directory="c:data" //gt
</ESPACES DE TRAVAIL>
<LAYER type="featureclass" name="Océan" visible="true" >
<DATASET name="WORLD30" type="polygone" workspace="shp_ws-12" />
<SIMPLERENDERER>
<SIMPLEPOLYGONSYMBOL fillcolor="240,255,255" />
</SIMPLERENDERER>
</CALQUE>
<LAYER type="featureclass" name="Robinson" visible="true" >
<DATASET name="cntry94_Robinson" type="polygone" workspace="shp_ws-12" />
<COORDSYS />
<SIMPLERENDERER>
<SIMPLEPOLYGONSYMBOL filltype="solid" fillcolor="0,153,102" />
</SIMPLERENDERER>
</CALQUE>
<LAYER type="featureclass" name="Mollweide" visible="true" >
<DATASET name="Cntry94_Mollweide" type="polygone" workspace="shp_ws-12" />
<COORDSYS />
<SIMPLERENDERER>
<SIMPLEPOLYGONSYMBOL filltransparency="0.0" boundwidth="3" boundcolor="27,27,127" />
</SIMPLERENDERER>
</CALQUE>
</MAP>
</CONFIG>
</ARCXML>

Si une demande GET_IMAGE est adressée à ce service, l'image renvoyée inclut les deux couches dans Robinson.


Dans l'exemple suivant, un attribut de la chaîne de définition est modifié. Le méridien central des chaînes de définition FEATURECOORDSYS et FILTERCOORDSYS est passé de 0 à 180.

Modification du méridien central dans une chaîne de définition de projection :
<?xml version="1.0" encodage="UTF-8"?>
<ARCXML version="1.1">
<CONFIG>
<ENVIRONNEMENT>
<LOCALE country="US" language="en" variant="" />>
<UIFONT color="0,0,0" name="Arial" size="12" style="regular" />
</ENVIRONNEMENT>
<MAP>
<PROPRIÉTÉS>
<ENVELOPE minx="-14628440.851850007" miny="-9020047.848073646" maxx="15705351.712200116" maxy="8748562.401522137" name="Initial_Extent" />
<MAPUNITS units="mètres" />
<FEATURECOORDSYS chaîne //>
<FILTERCOORDSYS chaîne //>
</PROPRIÉTÉS>
<ESPACES DE TRAVAIL>
<SHAPEWORKSPACE name="shp_ws-12" directory="c:data" //gt
</ESPACES DE TRAVAIL>
<LAYER type="featureclass" name="Océan" visible="true" >
<DATASET name="WORLD30" type="polygone" workspace="shp_ws-12" />
<SIMPLERENDERER>
<SIMPLEPOLYGONSYMBOL fillcolor="240,255,255" />
</SIMPLERENDERER>
</CALQUE>
<LAYER type="featureclass" name="Robinson" visible="true" >
<DATASET name="cntry94_Robinson" type="polygone" workspace="shp_ws-12" />
<COORDSYS />
<SIMPLERENDERER>
<SIMPLEPOLYGONSYMBOL filltype="solid" fillcolor="0,153,102" />
</SIMPLERENDERER>
</CALQUE>
<LAYER type="featureclass" name="Mollweide" visible="true" >
<DATASET name="Cntry94_Mollweide" type="polygone" workspace="shp_ws-12" />
<COORDSYS />
<SIMPLERENDERER>
<SIMPLEPOLYGONSYMBOL filltransparency="0.0" boundwidth="3" boundcolor="27,27,127" />
</SIMPLERENDERER>
</CALQUE>
</MAP>
</CONFIG>
</ARCXML>

Si une requête GET_IMAGE est adressée à ce service, l'image renvoyée inclut les deux couches de Robinson centrées sur l'océan Pacifique.


Bien que les exemples ci-dessus avec des chaînes de définition utilisent des fichiers de configuration de carte, les chaînes de définition peuvent également être utilisées dans les demandes.

Un datum est un cadre de référence défini par un sphéroïde et la position du sphéroïde par rapport au centre de la terre. Un système de référence utilise la latitude et la longitude ou des systèmes de coordonnées géographiques pour définir les emplacements des points sur la surface d'un sphéroïde.

Une transformation de datum est une méthode qui convertit les données entre deux systèmes de coordonnées géographiques. Les systèmes de coordonnées géographiques courants sont WGS 1984 et NAD 1983. Seules les transformations de datum vers et depuis WGS 1984 sont prises en charge.

  • À l'étape 1, la couche d'origine se trouve dans le plan d'état NAD 1927. Cette information doit être incluse avec COORDSYS dans la couche. Les données projetées sont transformées en coordonnées géographiques.
  • In Step 2, the datum transformation is made from NAD 1927 to WGS 1984.
  • In Step 3, the datum transformation is made from WGS 1984 to NAD 1983.
  • In Step 4, the data is projected from geographic coordinates to the new projection, in this case UTM coordinates. The projection information is contained in FEATURECOORDSYS.
  • When these attributes are used with COORDSYS and FILTERCOORDSYS, the datum transformation is from a non-WGS 1984 datum to WGS 1984. For example, Pulkovo_1942_To_WGS_1984 transforms data from Pulkovo 1942 to WGS 1984.
  • When these attributes are used with FEATURECOORDSYS, the datum transformation is from WGS 1984 to a non-WGS 1984 datum. In the next example, the datum transformation is from NAD 1927 to NAD 1983.

The process of data densification adds virtual points to a layer before the layer is projected. When data is projected, the line geometry changes. For example, a square in one projection may be trapezoidal in another projection. In some cases, the number of points defining the geometry in the original layer is not enough to describe the geometry correctly in the projected layer. In the following figure, without densification, the square in Projection 1 is projected to the trapezoid as seen with Projection 2. When the data for Projection 1 is densified, the geometry for Projection 2 shows more detail.
DENSIFY can be used on a layer to define how much data should be densified before the layer is projected. If you find that features are missing from a layer in a requested image, usually around the periphery, try using DENSIFY on the layer. A word of caution about DENSIFY: if the tolerance value is too small, the ArcIMS Spatial Server can slow down considerably. It is better to start with a large number for tolerance . A guideline is to start with a value about 20 to 30 percent of the distance between the minimum and maximum x-coordinates of the current map extent.


You will find a good introduction to modern OpenGL for beginers at OGLdev.

I learned the old fashion way, with the red book. It should serve you well as reference and to clear up concepts.

I also want to recommend Learn OpenGL and opengl-tutorial.

For learning to code shaders, aside from the above, I found useful Shadertoy and Shaderific.

By the way, you are going to want a library that handles setting up the view port (window or full-screen) and handling input. many (old) tutorials use glut . If you see glut (and you are going to) go use freeglut , it is a drop-in replacement. why?

The original GLUT library seems to have been abandoned with the most recent version (3.7) dating back to August 1998. Its license does not allow anyone to distribute modified library code. This would be OK, if not for the fact that GLUT is getting old and really needs improvement. Also, GLUT's license is incompatible with some software distributions (e.g., XFree86).

Other alternatives include glfw or sdl . See GLUT-like Windowing, GUI, and Media Control toolkits. I'm currently on glfw camp.

Noter: OpenGL code is relatively easy to translate from a language to another. In particular if you are using a portable library to handle the setup of the view port. Do not be afraid of reading a tutorial for a different programming language than the one you are using. In fact, I would argue that learning WebGL is a good idea. Despite it being a different API, it is very close. I recommend the MDN WebGl tutorial.


13 Answers 13

Alright, I came here looking for an answer and didn't find something simple and straightforward, so I went ahead and did the dumb but effective (and relatively simple) thing: Monte Carlo optimisation.

Very simply put, the algorithm is as follows: Randomly perturb your projection matrix until it projects your known 3D coordinates to your known 2D coordinates.

Here is a still photo from Thomas the Tank Engine:

Let's say we use GIMP to find the 2D coordinates of what we think is a square on the ground plane (whether or not it is really a square depends on your judgment of the depth):

I get four points in the 2D image: (318, 247) , (326, 312) , (418, 241) , and (452, 303) .

By convention, we say that these points should correspond to the 3D points: (0, 0, 0) , (0, 0, 1) , (1, 0, 0) , and (1, 0, 1) . In other words, a unit square in the y=0 plane.

Projecting each of these 3D coordinates into 2D is done by multiplying the 4D vector [x, y, z, 1] with a 4x4 projection matrix, then dividing the x and y components by z to actually get the perspective correction. This is more or less what gluProject() does, except gluProject() also takes the current viewport into account and takes a separate modelview matrix into account (we can just assume the modelview matrix is the identity matrix). It is very handy to look at the gluProject() documentation because I actually want a solution that works for OpenGL, but beware that the documentation is missing the division by z in the formula.

Remember, the algorithm is to start with some projection matrix and randomly perturb it until it gives the projection that we want. So what we're going to do is project each of the four 3D points and see how close we get to the 2D points we wanted. If our random perturbations cause the projected 2D points to get closer to the ones we marked above, then we keep that matrix as an improvement over our initial (or previous) guess.

We need to start with some matrix, identity matrix seems a natural choice:

We need to actually implement the projection (which is basically a matrix multiplication):

This is basically what gluProject() does, 720 and 576 are the width and height of the image, respectively (i.e. the viewport), and we subtract from 576 to count for the fact that we counted y coordinates from the top while OpenGL typically counts them from the bottom. You'll notice we're not calculating z, that's because we don't really need it here (though it could be handy to ensure it falls within the range that OpenGL uses for the depth buffer).

Now we need a function for evaluating how close we are to the correct solution. The value returned by this function is what we will use to check whether one matrix is better than another. I chose to go by sum of squared distances, i.e.:

To perturb the matrix, we simply pick an element to perturb by a random amount within some range:

(It's worth noting that our project() function doesn't actually use mat[2] at all, since we don't compute z, and since all our y coordinates are 0 the mat[*][1] values are irrelevant as well. We could use this fact and never try to perturb those values, which would give a small speedup, but that is left as an exercise. )

For convenience, let's add a function that does the bulk of the approximation by calling perturb() over and over again on what is the best matrix we've found so far:

Now all that's left to do is to run it.

I find this already gives a pretty accurate answer. After running for a while, the matrix I found was:

with an error of around 2.6e-5 . (Notice how the elements we said were not used in the computation have not actually been changed from our initial matrix that's because changing these entries would not change the result of the evaluation and so the change would never get carried along.)

We can pass the matrix into OpenGL using glLoadMatrix() (but remember to transpose it first, and remember to load your modelview matrix with the identity matrix):

Now we can for example translate along the z axis to get different positions along the tracks:

For sure this is not very elegant from a mathematical point of view you don't get a closed form equation that you can just plug your numbers into and get a direct (and accurate) answer. HOWEVER, it does allow you to add additional constraints without having to worry about complicating your equations for example if we wanted to incorporate height as well, we could use that corner of the house and say (in our evaluation function) that the distance from the ground to the roof should be so-and-so, and run the algorithm again. So yes, it's a brute force of sorts, but works, and works well.


Syntaxe

Name of the custom transformation method.

  • In any Windows operating system the Application Data folder is located at %appdata% and the user's Temp folder is located at %temp% .
  • In Unix systems, the tmp and Application Data folders are located in the user's home directory, under $HOME and $TMP , respective.

The starting geographic coordinate system.

The final geographic coordinate system.

Set the METHOD and PARAMETER values wrapped in a string for custom transformation GEOGTRAN. Set the name of the method from the available methods of Geocentric_Translation, Molodensky, Molodensky_Abridged, Position_Vector, Coordinate_Frame, Molodensky_Badekas, NADCON, HARN, NTV2, Longitude_Rotation, Unit_Change, and Geographic_2D_Offset. Each method has its own sets of parameters—you can edit the values of the parameters by entering text next to the name of the parameter within the whole string representation of the custom geographic transformation. See examples in the Python sample below.


Examining the Relative Water Depth Results

A display group appears with a natural color composite. C'est le reference image.

  1. To change the reference image to a false-color composite or to water reflectance, select the appropriate choice in the Reference Image drop-down list, then click Load.
  2. To change the source of the Bathymetry data used to display water depths, select an item from the Bathymetry Source drop-down list. This list contains either or both of the log ratio transform results and the Principal Component bands, depending on what was processed.
  3. To load a water depth image with a color table applied, select the Color Table languette.
  4. To load a density sliced image with the default parameters, select the Density Slice languette. A new display group opens with the density sliced image. The new display group is dynamically linked to the reference image display group.
  5. Utiliser Auto-Flicker to examine your results (for detailed information on using this tool.
  6. When you are finished examining results, click Next in the Examine Results panel, then click Finish to exit the Wizard.

Color Table

  1. Select a color table from the Color Tables list, then click Apply Color Table. A new display group opens with the colorized image. The new display group is dynamically linked to the reference image display group.
  2. To preview new color tables, select the desired color table in the list, then click Apply Color Table.

Utilisez le Stretch Bottom et Stretch Top slider bars to change the way the color table is applied. See the following figure for an example. Move the slider bar positions to reverse the color table order if needed.

Changing Color Table Appearance with Slider Bars (Imagery Courtesy of DigitalGlobe)

To export the overlay mosaic to an ArcGIS geodatabase, click Export Mosaic to ArcGIS Geodatabase. This button appears below the color table list. The Select Output Geodatabase dialog appears.

Overlay Mosaic (Imagery Courtesy of DigitalGlobe)

Density Slice

  1. Select the Base Image to use from the drop-down list, then click Load Image. A new display group opens with the density slice, dynamically linked to the base image type you selected.
  2. There are four display ranges available for use. Default depth ranges are general rules of thumb that apply in many, but not all, cases. Adjust the ranges to suit your particular data by entering new values or using the up/down arrows. The ranges are as follows:
    • Very Shallow
    • Shallow
    • Moderate
    • Deep

The numbers shown for each range indicate the bottom depth threshold. For example, the default for Shallow are pixels with a depth between 3.0 and 10.0 meters when calibration to absolute depths is performed.

The default ranges differ depending on whether or not the Bathymetry was calibrated to absolute depths. If the depths are relative, the results range from 0 to 1. Otherwise, the results range between whatever the calibrated depths are.

Adjust the color for each range by right-clicking on the color box and selecting a new color.

To turn off a range to show the Base Image beneath it, clear the On/Off check box for that particular range. The following shows a natural color reference image (left), density sliced image (center), with corresponding parameters (right) (imagery courtesy of DigitalGlobe)


Oculina Banks Habitat Area of Particular Concern Geographic Information System 2002 (NODC Accession 0090252)

The CD contains three folders and two readme files in the root directory. The readme files explain what is on the Cd and how to use the various products. The three folders include:

Oculina - Web site pages Oculina_arcview - the ArcView 3.2 project files Oculina_metadata - first draft of metadata created by C. Manning

Web site (oculina folder): - 9 pages linked to main index.htm, including: introduction, site history, 2001 survey, coral biology, reef ecology, human impacts, restoration, references, links, acknowledgements, and GIS Tools - last page, GIS Tools, among other things, links to the on-line ArcIMS version of the Oculina GIS (OGIS).

The main OGIS is in ArcView 3.2. A reduced ArcIMS version is available at www.uncw.edu/oculina. The ArcView project file, oculina_cd.apr, located in the /oculina_arview/ folder on the CD. Data folders in the /oculina_arcview/ folder include:

- Clelia_pdf folder on CD: dive narratives from research sub Clelia dives during 2001 Islands in the Stream expedition to Oculina Banks each file was written by J. Arcuri on contract each adobe pdf describes one dive based on review of the videotapes recorded during dive observations include qualitative observations on species and habitat, and a table of fish counts based on the REEF level 1 fish census techniques each file also references 3-4 digital image products (mpeg and jpegs) of representative events and habitat - Dive_Data folder on CD: this folder contains one folder-pics_videos-which contains the digital images from the 2001 Clelia dives these were all grabbed from the video tapes as either still jpegs or mpeg clips they are accessed via the shapefiles described below they were chosen and captured by either J. Arcuri as part of the Clelia dive narratives, or by C. Manning in areas that he did topographic analysis of historic data - Geotif folder on CD: these are colored, shaded geotifs created by Seafloor Systems Inc. using 2002 multi-beam survey data OculinaMain.tif/.tfw is for the southern portion of survey and OculinaAddOn.tif/.tfw is for the northwest survey lines - others may include other types of files including .sbn, .sbx, .prj, .plk

C. Manning created the original OGIS. As presented on the CD, it has 7 "default" views. Most contain some common data sets, e.g., boundaries of the OHAPC and a 5 min. grid for lat/long. In addition, each provides unique access to the following data:

1. 2001 Islands in the Stream Expedition-submersible Clelia and ROV dive data-photos, video clips, and fish counts-- from 2001 cruise to the OHAPC 2. Clelia Dive Tracks-detailed dive logs for 2001 Clelia dives 3. ROV dive tracks-detailed dive logs for 2001 ROV dives . is this a different set of dives. 4. NOS bathymetry-color coded by depth chart from 1958-65 NOS hydrographic surveys 5. Additional Photos/Videos-access to additional digital images, above those available in View 1 6. Multi-beam survey-shaded, colored geotifs from 2002 multi-beam survey 7. Historical Data-tables of observations from past JSL submersible dive transects conducted by J. Reed . where are these data?