Suite

Référence à l'interface connue d'ArcObjects IU

Référence à l'interface connue d'ArcObjects IU


Est-ce que n'importe qui sait ce qu'est la bibliothèque de référence d'ArcObjects pour l'interface IUnknown ? J'ai migré le code ci-dessous dans Visual Studio et il y a une erreur sur le "Dim pSelItem As IUnknown" ligne.

ERREUR 'IUknown' n'est pas accessible dans le contexte car il s'agit de 'Friend'

' Obtenir la couche ou la table sélectionnée Dim pTable As ITable Dim pDispTab As IDisplayTable Dim pStAloneTab As IStandaloneTable Dim pSelItem As IUnknown pSelItem = m_pMxDoc2.SelectedItem

Je suppose que je dois fournir la référence de chemin complète pour la ligne Dim? Peut-être qu'il y a une interface plus récente que je peux attribuer pSelItem pour .NET ?

METTRE À JOUR:

Peut-être que ça devrait être "Dim pSelItem comme objet", puisque la propriété IMxDocument.SelectedItem pour .NET accepte Object?

Lien de propriété IMxDocument.SelectedItem


Vous avez rarement besoin d'accéderIInconnudans le développement quotidien de l'AO (ou de l'interopérabilité COM d'ailleurs). Déclarer votre variable commeobjetfera l'affaire puisque vous devrez de toute façon le caster sur une autre interface par la suite.


Référence à l'interface connue d'ArcObjects IU - Systèmes d'Information Géographique

Permet d'accéder aux propriétés/méthodes d'un objet utilitaires de géotraitement.

Remarques

L'interface IGPUtilities permet d'accéder à l'objet GPUtilities qui contient de nombreuses méthodes et propriétés d'assistance utiles pour faciliter l'accès à d'autres ArcObjects.

La disponibilité des produits

Résumé de la méthode
annuler abortEditOperation (IWorkspaceEdit pWorkspace)
Abandonnez l'opération d'édition dans l'application.
annuler addToMapEx (IGPValue pGPValue, nom de chaîne, booléen temporaire, objet pUnkRenderer, booléen visible)
Ajoute l'objet de valeur de géotraitement donné à l'affichage de l'application.
annuler cleanupEditSession (abandon booléen)
Nettoie toute session d'édition.
annuler clearInMemoryWorkspace ()
Effacez l'espace de travail virtuel.
annuler createToolboxFromFactory (Alias ​​de chaîne, emplacement de chaîne, nom de boîte à outils de chaîne)
Crée une boîte à outils à l'emplacement donné pour une fabrique de fonctions d'un alias donné.
annuler generateGeographicTransformDomain (Objet iUnk, IGPCodedValueDomain pGTDomain, ISpatialReference pInSR, ISpatialReference pOutSR, IGPMessages pMessages)
Générez le domaine de transformation géographique correspondant à partir d'une référence spatiale d'entrée vers une référence spatiale de sortie.
IActiveView obtenirVueActive ()
Obtenez une vue active.
IBasicMap getBasicMap ()
Obtient la carte de base associée à l'application.
IEnveloppe getExtent (IGPValue pValue, int[] envType)
Obtient le type et la valeur de l'étendue de la valeur donnée.
ISpatialReference getGPSpRefEnvEx (IGPEnvironmentManager pEnvMgr, ISpatialReference pSrcSpRef, ISpatialReference pTgtSpRef, IEnvelope pNewExtent, double newMMin, double newMMax, double newZMin, double newZMax, Objet pWkspFDS)
Crée la référence spatiale à partir d'une source et d'un environnement.
annuler getGTOperationSet (IGPValue pGT, ISpatialReference pInSR, ISpatialReference pOutSR, ICompositeGeoTransformation ppGT)
Obtient l'ensemble des transformations géographiques.
Iespace de travail getInMemoryWorkspace ()
Obtenez l'espace de travail virtuel.
Chaîne getLayerName (IGPValue pValue, nom de chaîne)
Obtenez le nom de couche par défaut pour la valeur donnée.
ICarte obtenirCarte ()
Obtient la carte associée à l'application.
IStatusBar getStatusBar ()
Obtient la barre d'état associée à l'application.
IGP VariableManager getVariableManager ()
Définit le gestionnaire de variables.
booléen en application ()
Indique si le programme s'exécute dans une application ArcGIS.
ILayer makeLayer (IGPValue pValue, nom de chaîne, objet pUnkRenderer)
Crée une couche appropriée pour la valeur.
Objet ouvert (IGPValue pValue)
Renvoie l'ensemble de données de la valeur donnée.
Objet openFromString (String nameString)
Renvoie l'ensemble de données de la valeur donnée.
annuler removeFromMapEx (IGPValue pGPValue)
Supprime les données/couches spécifiées par l'objet de valeur de géotraitement de la carte.
annuler removeInternalData ()
Supprime toutes les couches et tables internes.
annuler saveLayer (Chaîne catalogPath, ILayer pLayer)
Enregistre une couche à un emplacement donné sur le disque.
annuler setInternalMap (IMap pMap)
Définit la carte interne utilisée par le géoprocesseur.
annuler setupEditSession (IClass pTable)
Démarre une session d'édition si nécessaire.
annuler setVariableManagerByRef (IGPVariableManager ppVariableManager)
Définit le gestionnaire de variables.
annuler startEditOperation (IWorkspaceEdit pWorkspace, booléen bHasPrivateEditSession)
Lancez l'opération d'édition dans l'application.
annuler stopEditOperation (IWorkspaceEdit pWorkspace, String operationLabel)
Arrêtez l'opération d'édition dans l'application.
Méthodes héritées de l'interface com.esri.arcgis.geoprocessing.IGPUtilities
addInternalLayer, addInternalLayer2, addInternalTable, addInternalTable2, addToMap, canAddToMap, compareWildCard, copy, createDataElement, createFeatureClassName, createFeatureLayer, createParameterValue, createParentFromCatalogPath, createRasterCatalogName, createRasterDatasetNameDECode, createTableName, deLayer expandDataElement, exportFeatureClass, fieldExists, FindField, findMapLayer, findMapLayer2, findMapTable, findMapTable2, generateDefaultOutputValue, generateSpRef, getCatalog, getEnvironment, getFields, getGPLayers, getGPMapData, getGPSpRefEnv, getGPTableViews, getGxObject, getGxObjectFromLocation, getGxObjects, getMapLayers, getMapTables, getNameObject, getNameObjectFromLocation, getUnQualifiedCatalogPath, getWorkspace, internalValidate, internalValidateValue, isBadMessage, isDatasetType, isDerived, isGPTableView, isRefreshCatalogParent, makeDataElement, makeDataElementFromNameObject, makeDataElements, makeGPLayer, makeGPLayerFromLayer, makeGPTableView, makeGPTableViewFromTable, makeGPValueFromObject, openDataset, openDatasetFromLocation, openFeatureClassFromString, openFeatureLayerFromString, openRasterDatasetFromString, openRasterLayerFromString, openTableFromString, packGPValue, qualifyOutputCatalogPath, qualifyOutputDataElement, refreshCatalog, refreshView, releaseInternals, removeFromMap, removeInternalLayer, removeInternalLayerEx, removeInternalTable, removeInternalTableEx, removeInternalValues, renommer, setGridIndex, setRefreshCatalogParent, setWorkspace, unpackGPValue, validateExists

La disponibilité des produits

Paramètres : pValue - Une référence à un com.esri.arcgis.geodatabase.IGPValue (in) Renvoie : Une référence à un autre objet (IUnknown) Génère : IOException - S'il y a des problèmes d'interopérabilité. AutomationException - Si le composant ArcObject lève une exception.

EnregistrerCouche

La disponibilité des produits

Paramètres : catalogPath - Le catalogPath (in) pLayer - Une référence à un com.esri.arcgis.carto.ILayer (in) Lance : IOException - S'il y a des problèmes d'interopérabilité. AutomationException - Si le composant ArcObject lève une exception.

ObtenirVueActive

La disponibilité des produits

Renvoie : Une référence à un com.esri.arcgis.carto.IActiveView Lance : IOException - S'il y a des problèmes d'interopérabilité. AutomationException - Si le composant ArcObject lève une exception.

GetMap

La disponibilité des produits

Renvoie : Une référence à un com.esri.arcgis.carto.IMap Lance : IOException - S'il y a des problèmes d'interopérabilité. AutomationException - Si le composant ArcObject lève une exception.

GetBasicMap

La disponibilité des produits

Renvoie : Une référence à un com.esri.arcgis.carto.IBasicMap Lance : IOException - S'il y a des problèmes d'interopérabilité. AutomationException - Si le composant ArcObject lève une exception.

En application

La disponibilité des produits

Renvoie : Le pInApplication renvoie : IOException - S'il y a des problèmes d'interopérabilité. AutomationException - Si le composant ArcObject lève une exception.

MakeLayer

La disponibilité des produits

Paramètres : pValue - Une référence à un nom com.esri.arcgis.geodatabase.IGPValue (in) - Le nom (in) pUnkRenderer - Une référence à un autre objet (IUnknown) (in) Retours : Une référence à un com.esri. arcgis.carto.ILayer lance : IOException - S'il y a des problèmes d'interopérabilité. AutomationException - Si le composant ArcObject lève une exception.

GetStatusBar

La disponibilité des produits

Renvoie : Une référence à un com.esri.arcgis.system.IStatusBar Lance : IOException - S'il y a des problèmes d'interopérabilité. AutomationException - Si le composant ArcObject lève une exception.

StartEditOperation

La disponibilité des produits

Paramètres : pWorkspace - Une référence à un com.esri.arcgis.geodatabase.IWorkspaceEdit (in) bHasPrivateEditSession - Le bHasPrivateEditSession (in) Lance : IOException - S'il y a des problèmes d'interopérabilité. AutomationException - Si le composant ArcObject lève une exception.

AbortEditOperation

La disponibilité des produits

Paramètres : pWorkspace - Une référence à un com.esri.arcgis.geodatabase.IWorkspaceEdit (in) Lance : IOException - S'il y a des problèmes d'interopérabilité. AutomationException - Si le composant ArcObject lève une exception.

StopEditOpération

La disponibilité des produits

Paramètres : pWorkspace - Une référence à un com.esri.arcgis.geodatabase.IWorkspaceEdit (in) operationLabel - Le operationLabel (in) Génère : IOException - S'il y a des problèmes d'interopérabilité. AutomationException - Si le composant ArcObject lève une exception.

SetVariableManagerByRef

La disponibilité des produits

Paramètres : ppVariableManager - Une référence à un com.esri.arcgis.geoprocessing.IGPVariableManager (in) Lance : IOException - S'il y a des problèmes d'interopérabilité. AutomationException - Si le composant ArcObject lève une exception.

GetVariableManager

La disponibilité des produits

Renvoie : Une référence à un com.esri.arcgis.geoprocessing.IGPVariableManager Lance : IOException - S'il y a des problèmes d'interopérabilité. AutomationException - Si le composant ArcObject lève une exception.

GenerateGeographicTransformDomain

La disponibilité des produits

Paramètres : iUnk - Une référence à un autre objet (IUnknown) (in) pGTDomain - Une référence à un com.esri.arcgis.geodatabase.IGPCodedValueDomain (in) pInSR - Une référence à un com.esri.arcgis.geometry.ISpatialReference (in ) pOutSR - Une référence à un com.esri.arcgis.geometry.ISpatialReference (in) pMessages - Une référence à un com.esri.arcgis.geodatabase.IGPMessages (in) Génère : IOException - S'il y a des problèmes d'interopérabilité. AutomationException - Si le composant ArcObject lève une exception.

GetGTOperationSet

La disponibilité des produits

Paramètres : pGTs - Une référence à un com.esri.arcgis.geodatabase.IGPValue (in) pInSR - Une référence à un com.esri.arcgis.geometry.ISpatialReference (in) pOutSR - Une référence à un com.esri.arcgis. geometry.ISpatialReference (in) ppGTs - Une référence à un com.esri.arcgis.geometry.ICompositeGeoTransformation (in) Génère : IOException - S'il y a des problèmes d'interopérabilité. AutomationException - Si le composant ArcObject lève une exception.

GetExtent

La disponibilité des produits

Paramètres : pValue - Une référence à un com.esri.arcgis.geodatabase.IGPValue (in) envType - Une constante com.esri.arcgis.geoprocessing.esriGPExtentEnum (out : utilisez un tableau d'éléments simples) Retours : Une référence à un com.esri .arcgis.geometry.IEnvelope lance : IOException - S'il y a des problèmes d'interopérabilité. AutomationException - Si le composant ArcObject lève une exception.

GetGPSpRefEnvEx

La disponibilité des produits

Paramètres : pEnvMgr - Une référence à un com.esri.arcgis.geoprocessing.IGPEnvironmentManager (in) pSrcSpRef - Une référence à un com.esri.arcgis.geometry.ISpatialReference (in) pTgtSpRef - Une référence à un com.esri.arcgis. geometry.ISpatialReference (in) pNewExtent - Une référence à un com.esri.arcgis.geometry.IEnvelope (in) newMMin - Le newMMin (in) newMMax - Le newMMax (in) newZMin - Le newZMin (in) newZMax - Le newZMax ( in) pWkspFDS - Une référence à un autre objet (IUnknown) (in) Returns : Une référence à un com.esri.arcgis.geometry.ISpatialReference Lance : IOException - S'il y a des problèmes d'interopérabilité. AutomationException - Si le composant ArcObject lève une exception.

CreateToolboxFromFactory

La disponibilité des produits

Paramètres : alias - L'emplacement de l'alias (in) - L'emplacement (in) toolboxName - Le toolboxName (in) Lance : IOException - S'il y a des problèmes d'interopérabilité. AutomationException - Si le composant ArcObject lève une exception.

SetInternalMap

La disponibilité des produits

Paramètres : pMap - Une référence à un com.esri.arcgis.carto.IMap (in) Lance : IOException - S'il y a des problèmes d'interopérabilité. AutomationException - Si le composant ArcObject lève une exception.

GetLayerName

La disponibilité des produits

Paramètres : pValue - Une référence à un nom com.esri.arcgis.geodatabase.IGPValue (in) - Le nom (in) Renvoie : Le pName Lance : IOException - S'il y a des problèmes d'interopérabilité. AutomationException - Si le composant ArcObject lève une exception.

RemoveInternalData

La disponibilité des produits

Génère : IOException - S'il y a des problèmes d'interopérabilité. AutomationException - Si le composant ArcObject lève une exception.

GetInMemoryWorkspace

La disponibilité des produits

Renvoie : Une référence à un com.esri.arcgis.geodatabase.IWorkspace Lance : IOException - S'il y a des problèmes d'interopérabilité. AutomationException - Si le composant ArcObject lève une exception.

ClearInMemoryWorkspace

La disponibilité des produits

Génère : IOException - S'il y a des problèmes d'interopérabilité. AutomationException - Si le composant ArcObject lève une exception.

OpenFromString

La disponibilité des produits

Paramètres : nameString - Le nameString (in) Renvoie : Une référence à un autre objet (IUnknown) Lance : IOException - S'il y a des problèmes d'interopérabilité. AutomationException - Si le composant ArcObject lève une exception.

ConfigurationModifierSession

La disponibilité des produits

Paramètres : pTable - Une référence à un com.esri.arcgis.geodatabase.IClass (in) Lance : IOException - S'il y a des problèmes d'interopérabilité. AutomationException - Si le composant ArcObject lève une exception.

NettoyageModifierSession

La disponibilité des produits

Paramètres : abort - L'abandon (in) Génère : IOException - S'il y a des problèmes d'interopérabilité. AutomationException - Si le composant ArcObject lève une exception.


Code utilisant la bibliothèque comtypes

(Basé sur Google et les réponses dans les commentaires ci-dessous)

  • (Ré-)Enregistré la DLL
  • Enregistré la version 32 bits de la DLL et essayé python 32 bits
  • Définir le mode de compatibilité de python.exe sur Windows XP SP3

J'ai essayé de ne pas instancier IRtdServer, c'est-à-dire de remplacer ces deux lignes :

Cela semblerait indiquer que la fonction ServerStart existe, mais n'est pas définie ? (Ça semble vraiment bizarre. Il doit y avoir plus dans ce mystère.)

J'ai essayé de passer le paramètre interface="IRtdServer" à CreateObject :

Code de traçage dans la bibliothèque comtypes, qui semblerait indiquer que le paramètre d'interface veut une classe d'interface, pas une chaîne. J'ai trouvé différentes interfaces définies dans la bibliothèque comtypes : IDispatch , IPersist , IServiceProvider . Tous sont des sous-classes de IUnknown . Selon OleViewDotNet, IRtdServer est également une sous-classe de IUnknown . Cela me porte à croire que j'ai besoin d'écrire de la même manière une classe IRtdServer en python afin d'utiliser l'interface, mais je ne sais pas comment faire cela.

J'ai remarqué le paramètre dynamique de CreateObject . Le code indique que cela est mutuellement exclusif au paramètre d'interface, j'ai donc essayé ceci:

Mais l'erreur est la même que mon erreur d'origine : IRtdServer has _ctypes.COMError : (-2147352570, 'Unknown name.', (Aucun, Aucun, Aucun, 0, Aucun))

Toute aide ou indices seraient grandement appréciés. Merci en avance.

(Ne sachant pas vraiment ce que je fais), j'ai essayé d'utiliser OleViewDotNet pour regarder la DLL :


Arcobjects java api_Java Guide du développeur ArcObjects |學步 園

ArcGIS Engine est une bibliothèque complète de composants de système d'information géographique (SIG) intégrables permettant aux développeurs de créer des applications personnalisées. À l'aide d'ArcGIS Engine, les développeurs peuvent intégrer des fonctions ArcGIS dans d'autres outils d'information et créer des applications personnalisées

qui fournissent des solutions SIG avancées.

(1)、Services de base—Les principaux ArcObjects SIG requis pour presque toutes les applications SIG, telles que la géométrie et l'affichage des entités.

(2)、Accès aux données : ArcGIS Engine permet d'accéder à une grande variété de formats raster et vectoriels, y compris la puissance et la flexibilité de la géodatabase.光柵 和 矢量 數據 的 訪問

(3)、Présentation de carte—ArcObjects pour la création et l'affichage de cartes avec des capacités de symbologie, d'étiquetage et de cartographie thématique, y compris des applications personnalisées. ArcObjects將產生與符號、標記和專題製圖功能,包括自定義應用程序。

(4)、Composants de développement—Commandes d'interface utilisateur de haut niveau pour un développement rapide des applications et un système d'aide complet et des exemples d'outils pour un développement efficace.

(5)、Extensions—ArcGIS Engine Runtime est déployable avec la fonctionnalité standard ou avec des extensions supplémentaires pour des fonctionnalités avancées.

ArcObjects est un ensemble de modèles de données géographiques indépendants de la plate-forme et basés sur des composants écrits en C++.

Les services ArcObjects peuvent être classés en services de base, accès aux données, analyse de carte, présentation de carte, composants de développement et cadre de développement Web, et interface utilisateur et extensions. Les services sont organisés sous ArcGIS Desktop, ArcGIS Engine et

ArcGIS Server pour adapter les besoins du développeur SIG.

Voir l'illustration suivante qui montre les services organisés avec chaque produit

Java Interop (COM 和 JAVA Java API之間的橋樑)

ArcObjects, le cheval de bataille des applications ArcGIS Desktop, ArcGIS Engine et ArcGIS Server, est une bibliothèque de composants de système d'information géographique (SIG) écrit en Microsoft's (COM). un langage compatible COM (par exemple, VC++, Visual Basic, VBA, etc.)

car ils ont accès à l'API COM et à ses fonctionnalités d'exécution. Le manque de services d'exécution de COM pour Java constitue un défi pour les programmes Java souhaitant utiliser ArcObjects. Heureusement, Java COM Interop (également appelé Java Interop) répond à ces

problèmes et fournit une solution de transition pour que les ArcObjects Java et COM interagissent les uns avec les autres.

Il fournit essentiellement une API Java pour ArcObjects et les bibliothèques d'exécution pour exécuter les composants ArcObjects dans une application Java.

(1)、Bibliothèque de géométrie com.esri.arcgis.geometry

La bibliothèque Geometry gère la géométrie, ou la forme, des entités stockées dans des classes d'entités ou d'autres éléments graphiques. Les objets géométriques généraux avec lesquels la plupart des utilisateurs interagissent sont Point, MultiPoint, Polyline et Polygon. A côté de ces entités de niveau supérieur se trouvent

les géométries primitives qui servent de blocs de construction pour les polylignes et les polygones. Ce sont des segments, des chemins et des anneaux. Les polylignes et les polygones sont composés d'une séquence de segments connectés qui forment un chemin. Un segment est constitué de deux points distincts : le

point de départ et point d'arrivée—et un type d'élément qui définit la courbe du début à la fin. Les types de segments sont CircularArc, Line, EllipticArc et BézierCurve. Tous les objets géométriques peuvent avoir des valeurs z et m et des ID associés à leurs sommets. le

les objets de géométrie fondamentale prennent tous en charge les opérations géométriques, telles que le tampon et le découpage. Les primitives de géométrie ne sont pas destinées à être étendues par les développeurs.

Les entités d'un système d'information géographique (SIG) font référence à des entités du monde réel. L'emplacement de ces entités du monde réel est défini par une géométrie ainsi qu'une référence spatiale. Objets de référence spatiale pour les systèmes de coordonnées projetées et géographiques

sont inclus dans la bibliothèque de géométrie. Les développeurs peuvent étendre le système de référence spatiale en ajoutant de nouvelles références spatiales et projections entre les références spatiales.

(2)、Bibliothèque de sortie com.esri.arcgis.output

La bibliothèque de sortie est utilisée pour créer une sortie graphique vers des périphériques, par exemple des imprimantes, des traceurs et des formats papier, tels que des métafichiers améliorés et des formats d'image raster (Joint Photographics Experts Group [JPEG], bitmap [BMP], etc.) . Le développeur utilise

les objets de la bibliothèque avec d'autres parties du système ArcGIS pour créer une sortie graphique. Il s'agit généralement d'objets dans les bibliothèques Display et Carto. Les développeurs peuvent étendre la bibliothèque de sortie pour les appareils personnalisés et les formats d'exportation.

(3)、Bibliothèque GeoDatabase com.esri.arcgis.geodatabase

La bibliothèque GeoDatabase fournit l'interface de programmation d'application (API) pour la géodatabase. La géodatabase est un référentiel de données géographiques construit sur la technologie de base de données relationnelle et relationnelle objet standard de l'industrie. Les objets de la bibliothèque

fournir un modèle de programmation unifié pour toutes les sources de données prises en charge dans ArcGIS. La bibliothèque GeoDatabase définit de nombreuses interfaces qui sont implémentées par les fournisseurs de sources de données plus haut dans l'architecture. La géodatabase peut être étendue par les développeurs pour

prend en charge des types spécialisés d'objets de données (fonctionnalités, classes, etc.), en outre, il peut avoir des sources de données vectorielles personnalisées ajoutées à l'aide des objets PlugInDataSource. Les types de données natifs pris en charge par la géodatabase ne peuvent pas être étendus.

(4)、Bibliothèque de géotraitement com.esri.arcgis.geoprocessing

Le géotraitement est un élément fondamental d'ArcGIS. Que vous soyez un utilisateur novice ou expérimenté, le géotraitement deviendra un élément essentiel de votre routine de travail quotidienne avec ArcGIS Engine et ArcGIS Server pour la plate-forme Java. Le géotraitement fournit l'analyse des données,

la gestion des données et les outils de conversion de données nécessaires à tous les utilisateurs du système d'information géographique (SIG).

a、Opérateurs et outils de géotraitement

Le géotraitement se compose d'opérateurs (outils) qui opèrent sur les données (tables, classes d'entités, rasters, réseaux irréguliers triangulés [TIN], etc.) et effectuent les tâches nécessaires à la manipulation et à l'analyse des informations géographiques sur un large

éventail de disciplines. Chaque outil de géotraitement effectue une opération essentielle sur les données géographiques, telle que la projection de jeux de données d'une projection cartographique à une autre, l'ajout de champs à une table ou la création de zones tampons autour d'entités.

ArcGIS comprend plus de 400 outils de géotraitement. Un outil de géotraitement prend des jeux de données ArcGIS en entrée (tels que des classes d'entités, des tables, des rasters et des fichiers de conception assistée par ordinateur [CAO]), applique une opération sur ces données et crée un jeu de données en sortie. Voir

l'illustration suivante :

Un outil de géotraitement est exécuté par le géoprocesseur. La classe de géoprocesseur est la classe principale qui simplifie la tâche d'exécution des outils de géotraitement. Le géoprocesseur contient des propriétés et des méthodes qui permettent d'exécuter des outils, de définir le géoprocesseur global

paramètres d'environnement et examinez les messages résultants. C'est le point d'accès unique pour l'exécution de tout outil de géotraitement dans ArcGIS, y compris les extensions.


Voyageurs

实际应用中我们有一些工具可以使用:Diagrammes de modèles d'objets, système d'aide aux développeurs ArcObjects, navigateur d'objets d'ESRI (EOBrowser)和Système d'aide aux développeurs ArcObjects和EOBrowser 可能大家用得也比较多,但是Diagrammes de modèles d'objets可能就用得不多,不太注意。其实Diagrammes de modèle d'objet是ArcObjects学习和使用很有用的工具,通过这些图可以更好的理解各种类之间的关联,结合Com的知识,可以加深对ArcObjects的认识,使对其 的 使用 更 高效.

Diagrammes de modèle d'objet中的一些概念:

3) Relations entre les classes:类之间的关系有Association(关联),Héritage de type(继承),Instanciation(实例化),Composition(组成)。

现在通过一个实例给出如何利用Diagramme de modèle d'objet,Aide pour les développeurs ArcObjects和EOBrowser来寻找完成一个操作所需要设计的类和方法。实例如下:访问C:dataUS.mdb这个GeoDatabase中的"Status"这个Classe d'entités。首先,知道这个操作与GeoDatabase有关,可以打开GeoDatabase这个Diagramme de modèle d'objet,利用PDF的查找功能查找Access这个关键字(Access是访问数据库的关键字,如果Diagram不大,可以游览整个Diagram寻找) ,可以发现一个AccessWorkspaceFactory类,但是在Aide aux développeurs中可以看到AccessWorkspaceFactory类提供了三个接口IWorkspaceFactory,IWorkspaceFactory2,ILocalDatasetCompact。其中接口IWorkspaceFactory有一个OpenFromFile()方法可以打开一个base de données,可以定义一个IWorkspaceFactory接口来应用这个方法,但是需要实例化一个类来实现这个方法,但WorkspaceFactory是一个抽象类,而AccessWorkspaceFactory类继承了WorkspaceFactory,所以可以用AccessWorkspaceFactory类来实现IWorkspaceFactory接口使用OpenFromFile()方法。

Dim pWSF comme IWorkspaceFactory
Dim pWS comme IWorkspace
Dim pFWS comme IFeatureWorkspace
Dim pFC comme IFeatureClass

Définir pWSF = Nouvel AccessWorkspaceFactory
Définir pWS = pWSF.OpenFromFile(“C:dataUS.mdb”,0)
Définir pFWS = pWS 'QueryInterface
Définir pFC = pFWS.OpenFeatureClass(« États »)

利用Diagrammes de modèle d'objet 可以清楚的了解类的关系,一个类到底有什么接口,接口之间是什么关系,用某一个方法会返回什么样的类型的结果,如果利用这些结果,如果能够很好的利用ArcObjects会有一个更深的理解!

posté @ 2009-12-05 11:47 Goed 阅读(83) | (0) |编辑
AO快速入门 ArcObjects QuickStart

AO 是ESRI公司ArcGIS家族中应用程序ArcMap, ArcCatalog和 ArcScene的开发平台,它是基于Microsoft COM技术所构建的一系列COM组件集。应该澄清的是到目前为止,AO还不是一个独立的应用产品,是依附在你的ArcGIS DeskTop产品中的软件开发包。也就是说,你购买了ArcGIS Desktop的任何一个产品,不管是ArcView还是ArcInfo,你都有了这套强大的AO组件集,利用AO提供的组件 对象 来 进行 应用 开发.

其实是ArcMap、ArcCatalog和ArcScene这三个应用程序都是由AO搭建起来的,因此从理论上讲这些应用程序能完成的任务,通过 AO同样可以完成(但重新搭建一个ArcMap式的应用程序先不---就是要利用ESRI提供的这些AO组件来AO已经提供了许多底层的基本功能,而你的任务是按照应用需求将这些底层功能组装集合成一个更强大的COM对象。我们现在知道AO是基于微软的COM技术来VBA、VB、VC++、DEPHI等多种支持COM标准的开发工具,而扩展性是指AO组件没有提供的功能,如需要定义一种新的数据格式,你就可以利用COM技术来写自己的COM组件,对AO组件库进行扩展补充。在 ESRI的文挡中曾经看过类似'用AO开发功能是没有限制的,这取决于你的想象力。AO的确非常强大,看看ArcMap给我们展现出来的功能就知道了。由于采用了COM技术,因此你不但可以在AO的基础上构造COM组件,而且可以自己来完成一个 COM组件来对AO进行补充。至于为什么AO会基于COM技术,就趋势而言,目前和以后GIS的发展会和主流IT技术融合的越来越紧密,毕竟任何一个软件产品最终是要拿来用的,所以除了提供专业的GIS功能外,从易用性和扩展性来说也是极其重要的,而COM技术提供了一个解决之道。是不是有些罗AO的开发前先需要您打针兴奋剂,虽然功能强大、使用方便的应用程序从来不是简单的几行代码和控件的拖来拖去就可以搞定AO做开发的人员也是如此。那我们还不开始吗?

AO开发工具包的安装可以选择在安装ArcGIS Desktop时,也可以任何时候使用安装光盘下的ArcGISArcObjects Developer Kit目录下的Setup.exe文件进行安装。下面是AO开发包安装完成后的目录结构:

Aide --- 包含开发帮助文件:AODev.chm, ArcObjects.chm等

Kits --- 附加的开发者素材诸如投影引擎头文件,类别ID文件和ESRI (在最新的8.2版本中,该代码位置有所变化)

Diagrammes de modèle d'objet --- 包括所有的PDF格式对象模型图

Utilitaires --- 包含ESRI 对象浏览器等工具

1).《Aide aux développeurs ArcObjects》 ----- 这是AO开发的首选资源,个人觉得一定程度上甚至可以和微软的MSDN相媲美。不管是AO的基础COM、AO的对象层次图都提供了说明, 此外 还 提供 了 大量 的 开发 示例.

2) .《ArcObjects Online》 ----- 提供了最新的AO组件库文档,其中有一个关于AO的技术论坛相信会让大家有很多意外的收获;

3).《Exploration d'ArcObjects》 -----一本很不错的AO技术文档,对AO的开发进行了很好的组织,而且有大量的示例,可以随时复制利用;

4).《Création d'une géodatabase》 -----GéodatabaseGéodatabase的层次和建摸方法,对AO的开发 是 很好 的 补充.

MapScale (1:3,800,000) AddLayer (+)

MapUnits (6234233.32,5234234.56) ClearSelection

终于开始COM了,一个很沉重也很值得玩味的东西,我想许多AO的开发者对此都会有不同的感受。COM是Microsoft的Component Object Model缩写,它不仅定义了组件程序之间进行交互的标准,而且也提供了组件程序运行所需要的环境(COM本身要实现一个称为COM库(Bibliothèque COM)的API,它提供诸如客户对组件的查询,以及组件的注册/反注册等一系列服务COM库由操作系统加以实现,我们不必关心其实现的细节,象大家经常看到的ActiveX,DirectX,OLEDB都是基于COM技术的),主要应用于Microsoft Windows操作系统平台上。 COM通常的发布形式是:以win32动态链接库(DLL)或可执行文件(EXE)的形式发布。

COM的概念,象类,对象,接口,方法等,那么一个实际的AO开发中是如何体现这些COM概念的呢---既然AO是基于COM 的。在本节中,我将使用VB代码来说明如何使用AO的对象,并对如何阅读OMD(Diagramme de modèle d'objet)进行介绍。

Définir pMap = Nouvelle carte。

OMD(对象模型图)是基于OMT(Technique de modélisation d'objets)的表示方法,先来看看OMD能帮我们做些什么?

OMD class,分别是抽象类(AbstractClass)、组件类(CoClass)和普通类(Class)。抽象类的主要目的是为它的子类定义公共接口,一个抽象类将把它的部分或 全部 实现 延迟 到 子 类 中, 因此, 一个 抽象 类 不能 被 实例 化. 一个 组件 类 对象 可以 被 直接 创建, 普通 类 对象 虽然 不能 直接 创建, 但 它 可以 可以 作为 其它 类 的 一个 属性 或者 从 其它 类的实例化来创建。AO中的Dataset或Classes de géométrie是抽象类的示例,一个Géométrie类型对象不能被创建,但是一个Polyligne可以被创建。这个Polyligne对象实际上在类的基础上实现了Géométrie中定义的接口,因此在基类对象中被定义的接口可以从coclasse来访问。

1). Extension Analyste 3D ---用于3D可视化和表面建模的组件对象;

2). Application Framework ---让开发者在ArcMap和ArcCatalong中通过程序来定制用户界面;

3). ArcCatalog --- 能够让开发者扩展数据对象模型并集成定制对象和视图到ArcCatalog应用框架中;.

4). ArcMap --- 提供了ArcMap应用程序的核心功能,用于操作和显示地图文档;

5). ArcMap Editor--- 包括了对象编辑器扩展组件对象,要做编辑开发来这吧;

6). Display --- GIS的一个重要应用就是数据表现,对国内的许多最终用户更是热衷于此,利用这里包含的对象可以完成诸如地图符号显示、图形编辑反馈轨迹、坐标转换和屏幕控制等功能;

7). Geocoding --- 主要用于创建和管理地理编码服务等;

8). Geodatabase--- AO开发中一个不可或缺,毕竟GIS的应用都是围绕数据展开的,所以有关的GIS数据创建、加载、管理和存储等都是通过这里的对象进行的;

9). Geometry--- 不管是要素还是图形,涉及到空间信息的获取和应用来这儿找吧;

10). IMS ---提供了连接到ArcIMS服务器并访问ArcIMS图象和要素服务的功能;

11). NetWork--- 提供了网络创建、管理和完成分析操作等功能,打算定制和开发特定网络应用可以利用NetWork对象;

12). OutPut ---有入就有出,如果想把制作好的地图输出怎么办,通过这里提供的对象来完成吧;

13). Raster --- 用于访问和管理栅格数据的的AO对象;

14). Spatial Reference--- 用于完成空间参考的设置;

15).StreetMap USA Extension---这个和国内的用户关系不大。

絮语闲聊,权当消遣- 最近抽时间整理一些以前写的程序,也开始了解MO(ESRI MapObject)的应用,有些感受一起吐出。在GIS应用中最大的工作就是数据的采集整理了,虽然你可以采用MO、MAPX等一些地图控件,如果你够超人,甚至可以自己去做一个地图控件,来完成一个实用性也很个性化的系统出来。可是它终究只是一个应用系统而已。???你应该知道我要讲什么的了吧。所有的应用都是基于一定的数据结构,你可以在自己的应用开发中定义数据模型,但是数据的来源呢。不是CAD,就是 COVERAGE,SHAPE,你可以针对一两种数据格式进行转换,只是现实中的数据类型是多样的,总不能都去写吧,况且你的数据格式能否得到认可呢。再想想看你要做多少工作---那是一个GIS平台才能完成的事情。这就是许多情形下我们为什么没法完全用底层或地图控件去写一个完整GIS系统主要的原因吧。

在本章中,会实现一个特定功能的DLL,用来说明AO开发的几种模式,AO工具包的使用,如何应用写好的组件。在ArcObjects Developer Help中有许多完整和详尽的示例代码,这儿主要想就方法做一个简要的说明。

AO 可选的的开发方式可以分为两种,一种是在ArcMap应用框架基础上进行定制开发,另一种是脱离ArcMap应用框架去开发独立的应用程序。通常情况下,我们都是在ArcMap框架下进行定制开发。开发环境可以选择ArcMap本身自带的VBA,也可以选择VB、VC、DEPHI(AO 8.2以上的版本开始支持C#)。

打开ArcMap应用程序,选择TOOLS菜单下的MACROS子菜单,打开其中的VBA环境。选择Project工程下的ArcMap Object ,双击打开其中的ThisDocument对象,在右边的编辑环境中选择对象列表中的MxDocument对象,在任务列表中选择 OpenDocumen,然后键入以下的代码:

//Private Function MxDocument_OpenDocument() As Boolean

1). 启动VC,使用ATL COM AppWizard创建一个DLL工程;

2). 在INSERT菜单下选择NEW ATL OBJECT来增加一个ATL COM对象,

4). 在工作空间上选择Cworld类,并右键选择Implement Interface,在类型库中引入ESRI OBJECT Library,选择你要实现的接口(这儿我们选择Icommand)

5). 增加一个全局变量(IApplicationPtr m_ipApp)来引用到一个应用程序。注意到没有,这儿的接口变量定义和VB的有什么不同,除了本身的语法。就是接口多了‘Ptr’。因此,在VC中如何使用AO的对象你现在应该猜到一些了吧。

::MessageBox(NULL,_T("Hello World!"),_T("Wellcom AO"), MB_OK)

不管是用VB还是VC或是其它,要做的第一步就是在集成环境因入AO对象库(Esricore.olb),剩下的工作在接口中实现你要做的事情。关于如何进入VB和VC开发的完整代码及说明,请参阅ArcObject Developer Help。

可能是有感于独立AO应用程序开发群的迅速扩大,ESRI在其最新的ArcGIS8.2版本中不但继续提供对MapControl控件的开发支持,而且新增了一个PageLayoutControl控件,这对于有制图应用的开发者来说无疑带来了福音。许多时候可能会对组件和控件有些糊涂,其实Active X并不能代表整个COM,它只是COM对象的封装技术,由于COM对象使用的复杂性,因此才会创建框架(如Active X控件)来简化它。所以这两个控件也可称为AO高级通用组件,它由AO基础组件构造而成,面向通用功能,简化了用户开发过程,组件之间的协同控制消息都被封装起来。这级组件经过封装后,使二次开发更为简单。如一个简单的AO应用系统,若用基础AO组件对象开发,需要编写不少的代码,而利用高级通用组件,只需几句代码就够了。

总之在ArcMap中能能够完成的大部分任务,通过MapControl控件也可以完成。通过设置MapControl General, Layers, Map 属性,你甚至不需要写一行代码可以获得一些GIS功能。关于MapControl控件有许多完整的应用示例,存放在http://www.cnblogs.com/goed/admin/file://ArcObjects/ Developer KitSamplesControls目录下。

至于它的功能嘛,ArcMap的Layout 视图能完成的工作,使用PageLayoutControl同样可以完成,象增加和设置图例、打印输出等许多功能。关于PageLayout控件有许多完整的应用示例,也存放在http://www.cnblogs.com/goed/admin/file://ArcObjects/ Developer KitSamplesControls目录下。

posted @ 2009-12-05 11:38 Goed 阅读(141) | 评论(0) | 编辑
2009年11月29日
Code Snippet 代码智慧的结晶
善用VS中的Code Snippet来提高开发效率

一个常见的例子,在使用for语句结构时,可能会有这样的代码:
Code
int[] array = < 1, 2, 3, 4, 5 >
for (int i = 0 i < array.Length i++)
<
Console.WriteLine(array[i])
>

首先VS2008提供了很多内置的Snippet,另外我们也可以将自己编写的或者他人编写的导入VS中。通过菜单Tools -> Code Snippets Manager(或按Ctrl+K, Ctrl+B),打开Code Snippets Manager窗口:

存放Snippet的文件是XML文件,不过它的扩展名是.snippet。一个Snippet文件可以包含多个Snippet,就像上面的BellwareNUnit.snippet那样。它的基本结构如下:
XML Code
<?xml version="1.0" encoding="utf-8" ?>
<CodeSnippets xmlns="http://schemas.microsoft.com/VisualStudio/2005/CodeSnippet">
<CodeSnippet Format="1.0.0">
<Header>
<Title>Code Snippet for Debug.WriteLine method.</Title>
<Shortcut>dw</Shortcut>
<Author>Anders Cui</Author>
</Header>
<Snippet>
<Code Language="CSharp">
<![CDATA[
Debug.WriteLine(“Text”)
]]>
</Code>
</Snippet>
</CodeSnippet>
<!-- other snippets -->
</CodeSnippets>

在上面的tc Snippet中,按下Tab后,VS会选中TestCase,这样修改起来更为方便,对于上面的dw Snippet,我们自然希望VS选中”Text”部分,这需要下面的<Declarations>节点。

3. SimpleTypeName(TypeName),在Snippet所在的上下文中推断出TypeName参数的最简单形式。
下面以SimpleTypeName为例来看一下这些函数的用法:
XML Code
<Snippet>
<Code Language="CSharp">
<![CDATA[
$NameOfDebug$.WriteLine($text$)$end$
]]>
</Code>
<Declarations>
<Literal>
<ID>text</ID>
<ToolTip>Text to write</ToolTip>
<Default>"Text"</Default>
</Literal>
<Literal Editable="false">
<ID>NameOfDebug</ID>
<Function>SimpleTypeName(global::System.Diagnostics.Debug)</Function>
</Literal>
</Declarations>
</Snippet>

《Professional Visual Studio® 2008 Extensibility》
作者:Anders Cui
出处:http://anderslly.cnblogs.com/

visual studio code snippet editor使用

近日发现VS2008中的code snippet挺好用的.网上找找没有这方法的讲解,只有自己摸了. 它的主要功能自动创建一些代码如:

如我们想输入if else 语句的时候,可以 按Ctrl + K + X 然后就会出来一个insert snippet (插入代码片断)的提示,然后选择Visual C# 因为本人正在学习C#.(C#个人感觉挺有前途的.)

我的计算机中是这个位置:C:Program FilesMicrosoft Visual Studio 9.0VC#Snippets1033Visual C#

当然跟自己安装VS的目录有关.找到if.snippet ,文件命名挺有规律的.打开编辑就行了,本文以switch 语句为例:

从网上下载visual studio snippet editor 这个软件,比我们手动更改这里的XML格式的文件好多了.

Me就把这个界面翻译一下吧.英语湊合啊
snippet ,就是要插入的代码片断如IF了,switch 了,就是那个目录里边的东西
tittle 就是标题,跟snnippet一样就可以了.
shortcut 就是快捷方式.就是少输几个字母而已.
author :就是作者了.
Description 就是描述这个东西的作用了.
snippet types .里边有个expansion 就是在外面的代码,和suroundswith刚好相反.大家可以试下.
suroundswith作用就是把某条语句放到你想插入的代码片断当中.
imports ,导入命名空间当中.
literals 和objects就是
里边有个ADd和edit 和delete,就是添加编辑,删除.
ID就是添加id号了,名字可以随便起了.最好和那些英文单词,明白意思的东西.tooltip 就是鼠标放上出来的提示了.defaultvalue ,就是默认的值了.这个东西.替换那个ID,在正面的Code中代码中,.替换这个$ID$.
function目前发现没有什么用.是说明这个东西的功能的.editorble是说明这个变量是否可编辑.就是literals 和objects 是否可编辑.到IDE中就会被 一个 青色的东西,蒙着.
language 选择个语言就行了,我这里选择的是Csharp
下面就是编辑代码的地方.
比如我们要加入个case语句.然后我们就在下面写上case 后面的东西是要被替换的.我们就定义一个ID
ID我这里定义成cases 默认值是condion_On后面跟条件的.这里.的editoble设置成true,意思是可以编辑的.这个condion_on是可以被编辑的.就是被一层东西蒙着的.再加个:号就行了.case $cases$:
我们可以再加个break,别的都一样,只是后面editorble设置成false就可以了.好了后.我们想加多少个Case都行,复制粘贴就行了.
case $cases$:

posted @ 2009-11-29 22:01 Goed 阅读(118) | 评论(0) | 编辑
2009年11月27日
GIS开发中的坐标系统1(转帖整理)
From http://www.hmgis.cn/post/70.html
如何确定地球上的一点的精确位置?这是地理坐标系统要回答的问题。由于地球是一个球体,把地球上的一点转换到二维的平面地图上,依赖用户选择的投影坐标系统。因此,将地球上的一点转换到平面地图上有两个阶段,即确定某点在地球上的唯一标识坐标和将唯一标识坐标进行投影平面化。
这就必须对在ArcGIS中经常使用的两种坐标系统——地理坐标系统和投影坐标系统——进行认识。
地理坐标系统(Geographic coordinate system),也可称为真实世界的坐标系,是确定地物在地球上位置的坐标系。它是以经纬度为地图的存储单位的,而经纬度是角度。要确定地球上一点的坐标必须对地球进行数字模拟,要求抽象出一个与地球相似的椭球体,并且这个椭球体拥有一下特点:可以进行量化计算的,具有长半轴、短半轴、偏心率。
由于推求椭球体的年代、使用的方法以及测定的地区不同,其结果往往并不一致,因此地球椭球体的参数值有很多种,如海福特(Hayford)、克拉索夫斯基(Krasovsky)、I.U.G.G等。中国在1952年以前采用海福特(Hayford)椭球体,从1953-1980年采用克拉索夫斯基椭球体。随着人造地球卫星的发射,有了更精密的测算地球形体的条件。1975年第16届国际大地测量及地球物理联合会上通过国际大地测量协会第一号决议中公布的地球椭球体,称为GRS(1975),中国自1980年开始采用GRS(1975)新参考椭球体系。由于地球椭球长半径与短半径的差值很小,所以当制作小比例尺地图时,往往把它当作球体看待,这个球体的半径为6371公里。
以下几行便是GRS_1980椭球及其相应参数。
Spheroid: GRS_1980
Semimajor Axis: 6378137.000000000000000000
Semiminor Axis: 6356752.314140356100000000
Inverse Flattening: 298.257222101000020000
然而有了这个椭球体以后还不够,地理坐标系统还需要一个大地基准面将这个椭球定位,这个基准面将定位地球上点的参照系统,定义经纬线的起点合方向。基准面的建立需要选择一个椭球,然后在地球上选择一个点作为“原点”,椭球上所有其它的点都相对于这个原点进行位置定义。
大地基准面除了全球基准面WGS84,WGS72外,不同的地方还可以使用自己的本地基准面,如中国常常使用的北京1954,西安80,欧洲基准面ED50等,这些基准面之间是可以互相转化的。
在坐标系统描述中,常常可以看到这么一行:
Datum: D_Beijing_1954
这表示大地基准面是D_Beijing_1954,即北京1954基准面。有了Spheroid(椭球体)和Datum(基准面)两个基本条件,地理坐标系统便可以使用。
下面是一个地理坐标系的完整参数:
Alias:
Abbreviation:
Remarks:
Angular Unit: Degree (0.017453292519943299)
Prime Meridian: Greenwich (0.000000000000000000)
Datum: D_Beijing_1954
Spheroid: Krasovsky_1940
Semimajor Axis: 6378245.000000000000000000
Semiminor Axis: 6356863.018773047300000000
Inverse Flattening: 298.300000000000010000
地理坐标系统是最常用的坐标系对象,它所以经纬度来描述地面位置。
经度通常用字母λ表示。国际规定通过英国格林尼治天文台的子午线为本初子午线,作为计算经度的起点,该线的经度为0度,向东0-180度叫东经,向西0-180度叫西经。纬度通常以字母φ表示。纬度从赤道起算,在赤道上纬度为0度,纬线离赤道愈远,纬度愈大,至极点纬度为90度。赤道以北叫北纬、以南叫南纬。
地面上任一点的位置,通常用经度和纬度来决定。经线和纬线是地球表面上两组正交(相交为90度)的曲线,这两组正交的曲线构成的坐标,称为地理坐标系。地表面某两点经度值之差称为经差,某两点纬度值之差称为纬差。例如北京在地球上的位置可由北纬39°56'和东经116°24'来确定。
经纬度在度量上是不均匀的,比如经度在赤道上1度是111km,而在北纬60度是55.8km,在南北极点处则是0km。

投影坐标系统(Projection coordinate system)是将三维地理坐标系统上的经纬网投影到二维平面地图上使用的坐标系统,这是非常必要的。因此地理信息系统必然要考虑到地图投影,地图投影的使用保证了空间信息在地域上的联系和完整性,在各类地理信息系统的建立过程中,选择适当的地图投影系统是首先要考虑的问题。
由于 地球 椭 球体 表面 是 曲面, 而 地图 通常 是 要 绘制 在 平面图 纸上, 因此 制图 时 首先 要把 曲面 展 为 平面, 但是 球面 是 个 不可 展 的 曲面, 即 把 它 直接 展 为 平面 时, 不可能 不发生 破裂 或 褶皱. 为了 防止 这种 情况 的 发生, 地图 学家 采用 了 各种 特殊 的 方式 来 展开 这个 球面, 这些 方法 都是 在 保证 某一 特性 不变 的 情况 下 牺牲 其它 的 属性, 如 等角投影, 等 积 投影 和 正 形 投影 等.
-克吕格,在欧美这种投影方法称为投影横轴墨卡托投影。
-克吕格投影坐标系统中的一些参数:
Projection : Gauss_Kruger
Paramètres:
False_Easting : 500 000 000 000
False_Northing : 0,000000
Central_Méridien : 117.00000
Facteur_échelle : 1.000000
Latitude_Of_Origin : 0,000000
Unité linéaire : mètre (1.000000)
Système de coordonnées géographiques :
Nom : GCS_Pékin_1954
Alias:
Abréviation:
Remarques:
Unité angulaire : Degré (0.017453292519943299)
Premier méridien : Greenwich (0.000000000000000000)
Référence : D_Pékin_1954
Sphéroïde : Krasovsky_1940
Axe semi-majeur : 637824500000000000000000000
Axe semi-mineur : 6356863.018773047300000000
Aplatissement inverse : 298.30000000000000010000
x,y坐标来描述地面上的位置,它用地球椭圆球体sphéroïde来模拟地球,它使用projection表示投影计算方法,使用unité表示单位,用géocoordsys表示投影坐标系来源。
也就是说, 要 得到 投影 坐标 就 必须 得 有 一个 用于 投影 的 球面 坐标, 然后 才能 使用 投影 算法 去 进行 投影, 即 每 一个 投影 坐标 系统 都 必须 要求 有 地理 坐标 系统 参数.

-------------------------------------------------------------------------------------------------------------
De http://tech.cuit.edu.cn/forum/thread-1397-1-1.html
关于北京54和西安80是我们使用最多的坐标系
-克吕格投影的基本知识,了解就直接跳过,我国大中比例尺地图均采用高斯-克吕格投影,其通常是按6度和3度分带投影,1:2.5万1:50万比例尺地形图采用经差6度分带,1:1万比例尺的地形图采用经差3度分带。具体分带法是:6度分带从本初子午线开始,按经差6度为一个投影带自西向东划分,全球共分60个投影带,带号分别为1-60;3度投影带是从东经1度30秒经线开始,按经差3度为一个投影带自西向东划分,全球共分120个投影带。为了便于地形图的测量作业,在高斯-克吕格投影带内布置了平面直角坐标系统,具体方法是,规定中央经线为X轴,赤道Y轴,中央经线与赤道交点为坐标原点,x值在北半球为正,南半球为负,y值在中央经线以东为正,中央经线以西为负。由于我国疆域均在北半球,x值均为正值,为了避免y值出现负值,规定各投影带的坐标纵轴均西移500km,中央经线上原横坐标值由0变为500km。为了方便带间点位的区分,可以在每个点位横坐标y值的百千米位数前加上所在带号,如20带内A点的坐标可以表示为YA=20 745 921,8m。
在Systèmes de coordonnéesSystèmes de coordonnées projetésGauss KrugerPékin 1954目录中,我们可以看到四种不同的命名方式:
Pékin 1954 3 Degré GK CM 75E.prj
Pékin 1954 3 degrés GK Zone 25.prj
Pékin 1954 GK Zone 13.prj
Pékin 1954 GK Zone 13N.prj
对 它们 的 说明 分别 如下:
三度分带法的北京54坐标系,中央经线在东75度的分带坐标,横坐标前不加带号
三度分带法的北京54坐标系,中央经线在东75度的分带坐标,横坐标前加带号
六度分带法的北京54坐标系,分带号为13,横坐标前加带号
六度分带法的北京54坐标系,分带号为13,横坐标前不加带号
在Systèmes de coordonnéesSystèmes de coordonnées projetésGauss KrugerXian 1980目录中,文件命名方式又有所变化:
Xian 1980 3 Degré GK CM 75E.prj
Xian 1980 3 degrés GK Zone 25.prj
Xian 1980 GK CM 75E.prj
Xian 1980 GK Zone 13.prj
西安80坐标文件的命名方式、含义和北京54前两个坐标相同,但没有出现“带号+N”这种形式,为什么没有采用统一的命名方式?让人看了有些费解。

=======================================
Coordonnées géodésiques):大地测量中以参考椭球面为基准面的坐标。地面点P的位置用大地经度L、大地纬度B和大地高H表示。当点在参考椭球面上时,仅用大地 经度 和 大地 纬度 表示. 大地 经度 是 通过 该 点 的 大地 子午 面 与 起始 大地 子午 面 之间 的 夹角, 大地 纬度 是 通过 该 点 的 法线 与 赤道 面 的 夹角, 大地 高 是 地面 点沿 法线 到 参考 椭 球面 的 距离.
:是由平行于投影坐标轴的两组平行线所构成的方格网。因为是每隔整公里绘出坐标纵线和坐标横线,所以称之为方里网,由于方里又是平行于直角坐标轴的坐标网线,故又称直角坐标网。
1:1万——1:20万比例尺的地形图上,经纬线只以图廓线的形式直接表现出来,并在图角处注出相应度数。为了在用图时加密成 网,在(图式中称“分度带”),必要时对应短线相连就可以构成加密的经纬线网。1:2 5万地形图上,除 内 图 廓 上 绘 有 经纬 网 的 加密 分 划 外, 图 内 还有 加密 用 的 十字 线.
1:50万——1:100万地形图,在图面上直接绘出经纬线网,内图廓上也有供加密经纬线网的加密分划短线。
X轴,以赤道投影后的直线为Y轴,它们的交点为坐标原点。这样,坐标系中就出现了四 个象限。纵坐标从赤道算起 向北 为 正, 向南 为 负; 横坐标 从 中央 经线 算起, 向东 为 正, 向西 为 负.
虽然 我们 可以 认为 方 里 网 是 直角 坐标, 大地 坐标 就是 球面 坐标. 但是 我们 在 一副 地形 图 上 经常 见到 方 里 网 和 经纬度 网, 我们 很 习惯 的 称 经纬度 网 为 大地 坐标, 这个 时候 的 大地坐标 不是 球面 坐标, 她 与 方 里 网 的 投影 是 一样 的 (一般 为 高斯 投影), 也是 平面 坐标

posté @ 2009-11-27 19:30 Goed 阅读(125) | (0) |编辑
MSDN帮助文档不能使用的解决办法【转帖整理】