Terrain-Datasets in einer Geodatabase in SQL Server
Terrain-Datasets sind Oberflächen, die dreidimensionalen Raum darstellen. Sie nutzen Messwerte (als Feature-Classes gespeichert) und Regeln, um Triangular Irregular Network (TIN)-Pyramiden zur Repräsentation der Höhe zu generieren.
Die Quell-Feature-Classes können vom Terrain-Dataset referenziert werden oder in das Terrain-Dataset eingebettet sein.
Eine Erklärung zu Terrain-Datasets finden Sie unter "Terrain-Datasets". Beginnen Sie mit dem Thema Was ist ein Terrain-Dataset?
Terrains in ArcGIS Desktop
Im Kataloginhaltsverzeichnis sehen Terrain-Datasets wie beliebige andere Feature-Datasets aus, sie enthalten jedoch ein Terrain. Terrains werden mit folgendem Symbol dargestellt:
Der Name eines Terrain-Datasets in einer Geodatabase im SQL Server enthält den Datenbanknamen, den Namen des Locator-Besitzers und den Namen des Locators selbst.
Beispiel: Das Terrain-Dataset "napa_terrain" in einer Geodatabase mit dem Namen "gdb", das Benutzer "molly" gehört, wird als "gdb.MOLLY.Napa_terrain" im Kataloginhaltsverzeichnis aufgelistet.
Um zu sehen, welche Feature-Classes für das Terrain vorhanden sind, überprüfen Sie die Terraineigenschaften. Im folgenden Beispiel können Sie zwei der Feature-Classes des Terrains sehen – ud_terrain_breaks, ud_terrain_clip und eine eingebettete Feature-Class, napasub.
Terrains in einer Microsoft SQL Server-Datenbank
Terrain-Datasets werden in der Geodatabase in den gleichen Tabellen wie Feature-Datasets verwaltet. Zusätzlich werden terrainspezifische Tabellen im Schema des Benutzers erstellt, der das Terrain-Dataset erstellt hat. Diese Tabellen lauten wie folgt:
Zusammengesetzte Kacheln sind hinsichtlich der Daten-Coverage um ihren Umfang unvollständig. Sie können keine Messwerte aufweisen oder sich in der Nähe einer oder mehrerer Ecken befinden. Um eine Oberfläche zu definieren, die die Ausdehnung dieser Kacheln abdeckt, werden Daten von angrenzenden Kacheln verwendet. Diese Tabelle wird verwendet, um zu identifizieren, bei welchen Kacheln es sich um zusammengesetzte Kacheln handelt, und welche angrenzenden Kacheln Daten für die zusammengesetzte Kachel bereitstellen. Pro zusammengesetzter Kachel wird ein Datensatz verwendet.
Feldname |
Feldtyp |
Beschreibung |
Null? |
---|---|---|---|
ID |
objectid |
Die eindeutige Kennung des Shapes, das auf Nachbarkacheln zeigt |
NOT NULL |
tilenr |
long |
Die Nummer der zusammengesetzten Kachel Diese wird vom Kachelsystem des Terrains definiert. Der Wert -1 ist für einen Datensatz reserviert, der die Schwerpunkte der Umfangskacheln des Terrains enthält. |
NOT NULL |
emptytile |
short |
Der Wert -1 gibt an, dass die Kachel keine Messwerte aufweist. Der Wert 0 gibt an, dass die Kachel einige Daten aufweist, aber unvollständig ist. |
NOT NULL |
othertiles |
BLOB geometry |
Multipoint-Shape, das den Kachelschwerpunkt jeder angrenzenden Kachel speichert, die Messwerte für die zusammengesetzte Kachel bereitstellt |
NOT NULL |
Nicht überprüfte Bereiche sind Kacheln, die als Ergebnis der Änderungen an Features in einer oder mehreren beteiligten Feature-Classes nicht mehr gültig sind. Diese Tabelle wird verwendet, um diese ungültigen Kacheln zu protokollieren und aufzuzeichnen, in welchen Feature-Classes Änderungen vorgenommen wurden. Pro Feature-Class mit Änderungen wird ein Datensatz verwendet. Die Tabelle ist leer, wenn keine Änderungen vorgenommen wurden.
Feldname |
Feldtyp |
Beschreibung |
Null? |
---|---|---|---|
ID |
objectid |
Die eindeutige Kennung für das Shape |
NOT NULL |
classid |
long |
Die Klassenkennung der Feature-Class, die Quelle der Änderungen ist |
NOT NULL |
tilecount |
long |
Die Anzahl der ungültigen Kacheln durch Änderungen an der Feature-Class |
NOT NULL |
dirtyarea |
BLOB geometry |
Multipoint-Shape mit den Kachelschwerpunkten, die durch Änderungen an der Feature-Class ungültig sind |
NOT NULL |
Embed-Tabellen werden verwendet, um eingebettete Multipoint-Feature-Classes zu speichern. Es sind möglicherweise 0..n Embed-Tabellen vorhanden. Dies hängt davon ab, ob das Terrain eingebettete Daten aufweist. Pro eingebetteter Feature-Class wird eine Tabelle verwendet. Eine Embed-Tabelle ist Teil der Pyramidenstruktur des Terrains. Die eingebetteten Daten werden nach Kachel und Pyramidenebene gruppiert.
Feldname |
Feldtyp |
Beschreibung |
Null? |
---|---|---|---|
ID |
objectid |
Die eindeutige Kennung für das Shape |
NOT NULL |
tilerow |
long |
Die Zeilennummer der Terrainkachel, zu der die eingebetteten Punkte gehören |
NOT NULL |
tilecol |
long |
Die Spaltennummer der Terrainkachel, zu der die eingebetteten Punkte gehören |
NOT NULL |
resolution |
numeric(38,8) |
Gibt an, in welchen Pyramidenebenen die Punkte verwendet werden Da Pyramidenebenen kumuliert sind, ist die Auflösung von Punkten für Ebenen gleich oder höher. Ein besonderer Fall ist die Terrainübersicht. Die Auflösung der Übersichtsebene wird mit dem Wert -1 angegeben. Diesem Wert zugewiesene Punkte gelten für die gesamte Pyramide. |
NOT NULL |
pointcount |
long |
Die Anzahl an Punkten im Multipoint |
NOT NULL |
neighbordata |
smallint |
Gibt an, ob sich innerhalb der Kachelkartenrahmengrenze Punkte befinden. Die Punkte außerhalb der Grenze werden verwendet, um das vollständige Coverage der Kachelfläche sicherzustellen. Der Wert 0 gibt an, dass sich die Punkte innerhalb der Kachel befinden. -1 gibt an, dass sie sich außerhalb der Kachel befinden. |
NOT NULL |
shape |
BLOB geometry |
Eingebettete Multipoint-Geometrie |
NOT NULL |
Die Tabelle "InsideTiles" wird verwendet, um aufzuzeichnen, welche Terrainkacheln sich innerhalb der Datenfläche, oder Interpolationszone, des Terrains befinden. Dies wird pro Pyramidenebene aufgezeichnet, da sich die Ausdehnung für die Ebenen unterscheiden kann (z. B. bei der Verwendung unterschiedlicher Clip-Polygon-Feature-Classes in unterschiedlichen Pyramidenebenen). Pro Pyramidenebene wird ein Datensatz verwendet. Dies schließt Übersichtsebenen und Ebenen mit voller Auflösung ein.
Feldname |
Feldtyp |
Beschreibung |
Null? |
---|---|---|---|
ID |
objectid |
Die eindeutige Kennung für das Shape |
NOT NULL |
ztolerance |
numeric(38,8) |
Die Auflösung der Pyramidenebene A mit dem Wert -1 gibt die Übersichtsebene an. |
NOT NULL |
insidetiles |
BLOB geometry |
Multipoint-Geometrie, die die Datenkachel-Schwerpunkte speichert |
NOT NULL |
MRFC ist die Pyramidenstruktur für nicht eingebettete Feature-Classes. Massenpunkte und Bruchkantenstützpunkte für referenzierte Feature-Classes werden hier unter der Vorbedingung gespeichert, dass sie Teil einer Pyramidenebene mit voller Auflösung sind. (Sie können auch Teil anderer Ebenen sein.) Die Daten werden nach Kachel und Pyramidenebene gruppiert.
Feldname |
Feldtyp |
Beschreibung |
Null? |
---|---|---|---|
ID |
objectid |
Die eindeutige Kennung für das Shape |
NOT NULL |
tilerow |
long |
Die Zeilennummer der Terrainkachel, zu der die eingebetteten Punkte gehören |
NOT NULL |
tilecol |
long |
Die Spaltennummer der Terrainkachel, zu der die Pyramidenpunkte/Stützpunkte gehören |
NOT NULL |
resolution |
numeric(38,8) |
Gibt an, in welchen Pyramidenebenen die Punkte verwendet werden Da Pyramidenebenen kumuliert sind, ist die Auflösung von Punkten für Ebenen gleich oder höher. Ein besonderer Fall ist die Terrainübersicht. Die Auflösung der Übersichtsebene wird mit dem Wert -1 angegeben. Diesem Wert zugewiesene Punkte gelten für die gesamte Pyramide. |
NOT NULL |
pointcount |
long |
Die Anzahl an Punkten im Multipoint |
NOT NULL |
neighbordata |
smallint |
Gibt an, ob sich innerhalb der Kachelkartenrahmengrenze Punkte befinden. Die Punkte außerhalb der Grenze werden verwendet, um das vollständige Coverage der Kachelfläche sicherzustellen. Der Wert 0 gibt an, dass sich die Punkte innerhalb der Kachel befinden. -1 gibt an, dass sie sich außerhalb der Kachel befinden. |
NOT NULL |
shape |
BLOB geometry |
Multipoint-Geometrie |
NOT NULL |
Die Tabelle "terrain props" enthält versionsspezifische Eigenschaften für ein individuelles Terrain-Dataset. Diese schließen Punktanzahl und Ausdehnung ein. Die Informationen werden in einem BLOB gespeichert. Benutzer können in der Tabelle nicht auf sie zugreifen. Verwenden Sie stattdessen die ArcObjects-API des Terrains, um auf die Informationen zuzugreifen.
Feldname |
Feldtyp |
Beschreibung |
Null? |
---|---|---|---|
ID |
integer |
Objekt-ID für den Datensatz |
NOT NULL |
properties |
varbinary(max) |
Speichert versionsspezifische Dataset-Eigenschaften |
Ein Datensatz wird auch in der Tabelle GDB_ITEMS erstellt, um das Terrain-Dataset zu protokollieren. Die ID im Namen der Terrain-Tabellen stammt aus dem Feld ObjectID der Tabelle GDB_ITEMS.
Da Terrain-Datasets Teil eines Feature-Datasets sind, werden sie auch in der Tabelle GDB_ITEMRELATIONSHIPS verfolgt. Das Feature-Dataset UUID entspricht ORIGINID, und die Feature-Class UUID ist DESTID in der Tabelle GDB_ITEMRELATIONSHIPS. Die weiteren Tabellen für ein Terrain-Dataset werden unten angezeigt. Die 2 in den DTM_*-Tabellennamen im Beispiel stammt aus dem Feld ObjectID in der Tabelle GDB_ITEMS.
Die gestrichelten Linien geben implizite Beziehungen zwischen Spalten an.
Sie können den räumlichen Datentyp Geography von Microsoft nicht mit Terrain-Datasets verwenden, da 3D-Features nicht unterstützt werden.
Terrains in einem XML-Dokument
Terrain-Datasets werden in einem XML-Dokument durch den Dataset-Typ "ersriDTTerrain" gekennzeichnet.
<DatasetType>esriDTTerrain</DatasetType>
Nachfolgend finden Sie einen Teil des XML-Dokuments für das Terrain-Dataset ud_terrain_ds. Dieser Auszug des XML-Dokuments enthält die Definition des Datasets, einschließlich der Datenquellen, bis zur Beschreibung der ersten Feature-Class im Dataset.
<esri:Workspace xmlns:esri="http://www.esri.com/schemas/ArcGIS/10" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xs="http://www.w3.org/2001/XMLSchema"> <WorkspaceDefinition xsi:type="esri:WorkspaceDefinition"> <WorkspaceType>esriRemoteDatabaseWorkspace</WorkspaceType> <Version>RJP.WO2557</Version> <Domains xsi:type="esri:ArrayOfDomain" /> <DatasetDefinitions xsi:type="esri:ArrayOfDataElement"> <DataElement xsi:type="esri:DEFeatureDataset"> <CatalogPath>/V=RJP.WO2557/FD=gdb.MOLLY.napa_sub</CatalogPath> <Name>gdb.MOLLY.napa_sub</Name> <Children xsi:type="esri:ArrayOfDataElement"> <DataElement xsi:type="esri:DETerrain"> <Version>2</Version> <CatalogPath>/V=RJP.WO2557/FD=gdb.MOLLY.napa_sub/TERR=gdb.MOLLY.napa_sub_terrain1</CatalogPath> <Name>gdb.MOLLY.napa_sub_terrain1</Name> <DatasetType>esriDTTerrain</DatasetType> <DSID>2</DSID> <FeatureDatasetName>gdb.MOLLY.napa_sub</FeatureDatasetName> <Versioned>false</Versioned> <CanVersion>false</CanVersion> <ChildrenExpanded>true</ChildrenExpanded> <MetadataRetrieved>false</MetadataRetrieved> <FullPropsRetrieved>true</FullPropsRetrieved> <PyramidType>0</PyramidType> <TileSize>6000</TileSize> <MaxShapeSize>5000</MaxShapeSize> <MaxOverviewSize>50000</MaxOverviewSize> <TerrainDataSources xsi:type="esri:ArrayOfTerrainDataSource"> <TerrainDataSource xsi:type="esri:TerrainDataSource"> <Version>1</Version> <FeatureClassID>875</FeatureClassID> <FeatureClassName>gdb.MOLLY.DTM_2_DISCONNECT_3</FeatureClassName> <GroupID>1</GroupID> <SourceStatus>1</SourceStatus> <SourceType>1</SourceType> <SurfaceFeatureType>18</SurfaceFeatureType> <IsBase>true</IsBase> <ApplyToOverview>true</ApplyToOverview> <AutoGeneralize>false</AutoGeneralize> <ResolutionLowerBound>0</ResolutionLowerBound> <ResolutionUpperBound>0</ResolutionUpperBound> <SourceName>napasub_embedded</SourceName> <HeightField>Shape</HeightField> <TagValueField /> <ReservedFields xsi:type="esri:ArrayOfString" /> </TerrainDataSource> <TerrainDataSource xsi:type="esri:TerrainDataSource"> <Version>1</Version> <FeatureClassID>874</FeatureClassID> <FeatureClassName>gdb.MOLLY.napa_sub_breaks</FeatureClassName> <GroupID>2</GroupID> <SourceStatus>1</SourceStatus> <SourceType>0</SourceType> <SurfaceFeatureType>1</SurfaceFeatureType> <IsBase>true</IsBase> <ApplyToOverview>false</ApplyToOverview> <AutoGeneralize>false</AutoGeneralize> <ResolutionLowerBound>0</ResolutionLowerBound> <ResolutionUpperBound>2.6</ResolutionUpperBound> <SourceName /> <HeightField>Shape</HeightField> <TagValueField /> <ReservedFields xsi:type="esri:ArrayOfString" /> </TerrainDataSource> <TerrainDataSource xsi:type="esri:TerrainDataSource"> <Version>1</Version> <FeatureClassID>873</FeatureClassID> <FeatureClassName>gdb.MOLLY.napa_sub_clip</FeatureClassName> <GroupID>3</GroupID> <SourceStatus>1</SourceStatus> <SourceType>0</SourceType> <SurfaceFeatureType>10</SurfaceFeatureType> <IsBase>false</IsBase> <ApplyToOverview>true</ApplyToOverview> <AutoGeneralize>false</AutoGeneralize> <ResolutionLowerBound>0</ResolutionLowerBound> <ResolutionUpperBound>31</ResolutionUpperBound> <SourceName /> <HeightField /> <TagValueField /> <ReservedFields xsi:type="esri:ArrayOfString" /> </TerrainDataSource> </TerrainDataSources> <TerrainPyramidLevelZTols xsi:type="esri:ArrayOfTerrainPyramidLevelZTol"> <TerrainPyramidLevelZTol xsi:type="esri:TerrainPyramidLevelZTol"> <Version>1</Version> <PyramidLevelStatus>1</PyramidLevelStatus> <PointCount>-1</PointCount> <MaxScale>10000</MaxScale> <Resolution>5</Resolution> </TerrainPyramidLevelZTol> <TerrainPyramidLevelZTol xsi:type="esri:TerrainPyramidLevelZTol"> <Version>1</Version> <PyramidLevelStatus>1</PyramidLevelStatus> <PointCount>-1</PointCount> <MaxScale>20000</MaxScale> <Resolution>10</Resolution> </TerrainPyramidLevelZTol> </TerrainPyramidLevelZTols> </DataElement> <DataElement xsi:type="esri:DEFeatureClass">