ProConcepts Geodatabase - EsriJapan/arcgis-pro-sdk GitHub Wiki
ç²åºŠã®çŽ°ãã Geodatabase API ã䜿çšããæ©èœãGeodatabase API ã®æ©èœã¯ãArcGIS.Core.dll ã«ãããŸããGeodatabase API ã¯éåžžããããã®æ¢çŽ¢ããããã®ãªãŒãµãªã³ã°ãããã³ç·šéãšçµã¿åãããŠäœ¿çšââãããŸãã
Language: C#
Subject: Geodatabase
Contributor: ArcGIS Pro SDK Team <[email protected]>
Organization: Esri, http://www.esri.com
Date: 10/06/2024
ArcGIS Pro: 3.4
Visual Studio: 2022
- ã¢ãŒããã¯ãã£
- ããŒã¿ã¹ãã¢
- ãã£ãŒã㣠ããŒã¿ã®æäœ
- ããŒã¿ã¹ãã¢ã®ç·šé
- ãã®ä»ã®ãããã¯
- ArcGIS.Core.Data API ã¯ã䞻㫠DMLïŒããŒã¿æäœèšèªïŒã«éç¹ã眮ããŠããŸããéå®ç㪠DDLïŒããŒã¿å®çŸ©èšèªïŒæ©èœã«ã€ããŠã¯ãDDL ProConcepts ããã¥ã¡ã³ã ã§èª¬æãããŠããŸãã
API ãªãã¡ã¬ã³ã¹ã«èšèŒãããŠããããã«ãArcGIS.Core.Data API ã®ã»ãšãã©ãã¹ãŠã®ã¡ãœããã¯ãã¡ã€ã³ CIM ã¹ã¬ããïŒMCTïŒã§åŒã³åºãå¿ èŠããããŸãããããã®ã¡ãœããåŒã³åºãã¯ãQueuedTask.Run åŒã³åºãå ã«ã©ããããå¿ èŠããããŸããããããªããšãConstructedOnWrongThreadException ãã¹ããŒãããŸãã
ã»ãšãã©ã®å Žåãã¡ã¢ãªç®¡çã®åé¡ãåŠçããããã«ã.NET ã«ãã£ãŠæäŸãããçµã¿èŸŒã¿ã®ã¬ããŒãžã³ã¬ã¯ã·ã§ã³ã«å®å šã«äŸåã§ããŸããã¬ããŒãžã³ã¬ã¯ã¿ãŒã¯ãå®è¡æã«ãããã .NET ãªããžã§ã¯ããããã¹ãŠã®ã¡ã¢ãªãåå©çšããã©ã€ã ãªããžã§ã¯ãã䜿çšããã¡ã¢ãªãå§çž®ããŠããããŒãžããŒãã®ãµã€ãºãçž®å°ããŸãïŒã¬ããŒãžã³ã¬ã¯ã·ã§ã³ã®è©³çŽ°ã«ã€ããŠã¯ããã¡ã ãã芧ãã ããïŒããã ããPro SDK Core.Data API ã¯ç®¡çãããŠããªããªãœãŒã¹ïŒã€ãŸããã¬ããŒãžã³ã¬ã¯ã·ã§ã³ã«ãã£ãŠç®¡çãããŠããªããªãœãŒã¹ïŒã䜿çšãããããã¢ããªã±ãŒã·ã§ã³ã«ãã£ãŠæ瀺çã«è§£æŸãããå¿ èŠããããŸãã管çãããŠããªããªãœãŒã¹ã«ã¯ããã¡ã€ã«ããã¯ãããŒã¿ããŒã¹æ¥ç¶ããããã¯ãŒã¯æ¥ç¶ãªã©ããããŸãã
ã¢ã³ãããŒãžãªãœãŒã¹ãåŠçããããã® .NET ã«ã¯ãObject.Finalizeã䜿çšããæé»çãªå¶åŸ¡ãã¿ãŒã³ ãš IDisposable.Disposeã䜿çšããæ瀺çãªå¶åŸ¡ãã¿ãŒã³ ã®2ã€ã®ãã¿ãŒã³ããããŸãã ArcGIS.Core.Data API ã¯ãäž¡æ¹ãæäŸããŸããæšå¥šããããã¿ãŒã³ã¯ã䜿çšãçµäºããã Dispose ãåŒã³åºããŠãåºã«ãªãã¢ã³ãããŒãžãªãœãŒã¹ãæ瀺çã«è§£æŸããããšã§ããDispose ã¯ãã¢ã³ãããŒãžãªãœãŒã¹ã解æŸããŠãåºã«ãªããã¡ã€ã«ããã¯ãŸãã¯ã¢ã¯ãã£ããªããŒã¿ããŒã¹æ¥ç¶ã解æŸããŸãïŒDispose ãåŒã³åºããusingãæ§é ã䜿çšããããšãã§ããŸããPro ã¹ãããããšãµã³ãã«ã«ã¯ãusingãã®äŸãå€æ°ãããŸãïŒã
Finalize ã䜿çšããæé»ã®å¶åŸ¡ãã¿ãŒã³ã¯ãéçºè ã Dispose ã®åŒã³åºããå¿ããããåŒã³åºããªãããšãéžæããå Žåã§ããã¢ã³ãããŒãžãªãœãŒã¹ã解æŸã§ããããã«ããããã®ãã§ã€ã«ã»ãŒããšèŠãªãå¿ èŠããããŸãããã ããã¢ã³ãããŒãžãªãœãŒã¹ã¯ããªããžã§ã¯ããã¬ããŒãžã³ã¬ã¯ã·ã§ã³ããããŸã§ïŒå°æ¥ã®ããæç¹ã§ïŒè§£æŸãããªãããããªããžã§ã¯ãã«ãã£ãŠä¿æãããŠãããã¡ã€ã«ããã¯ãŸãã¯ããŒã¿ããŒã¹æ¥ç¶ã¯ããã¡ã€ãã©ã€ãºããããŸã§äœ¿çšããç¶ããŸããã¢ã³ãããŒãžãªãœãŒã¹ã®æé»çãªè§£æŸã«ãã£ãŠã¯ããªãœãŒã¹ããŸã ããã¯ãããŠããããŸãã¯ãªãœãŒã¹ãååŸãããªããžã§ã¯ããã¹ã³ãŒãå€ã«ãªã£ãå Žåã§ãæ¥ç¶ãæ¶è²»ããããªã©ãäºæããªãåäœãçºçããå¯èœæ§ããããŸãã
Dispose ã®äœ¿çšæ³ã¯æçœã«èŠãããããããŸããããéçºè ã¯æå³ããã« Core.Data ã€ã³ã¹ã¿ã³ã¹ãååŸããã³ãŒãã«æ³šæããå¿ èŠããããŸããããšãã°ã.NET åŒã³åºãã®ã·ãŒã±ã³ã¹ããã§ãŒã³ããŠããžãªããŒã¿ããŒã¹éå±€ãããã²ãŒãããã³ãŒãã«ã€ããŠèããŠã¿ãŸãã䟿å©ã§ã³ã³ãã¯ãã«èŠãã次ã®2ã€ã®ã¹ããŒãã¡ã³ãã¯ãå®éã«ã¯åé¡ããããŸãã
Geodatabase gdb = featureLayer.GetFeatureClass().GetDatastore() as Geodatabase;
ãããŠ
var id = row.GetTable().GetID();
åè ã®å Žåããã£ãŒãã£ã¯ã©ã¹ã€ã³ã¹ã¿ã³ã¹ãååŸãããåŸè ã®å ŽåãããŒãã«ã€ã³ã¹ã¿ã³ã¹ãååŸãããã©ã¡ããç Žæ£ãããŸãããéçºè ã¯ãã¬ããŒãžã³ã¬ã¯ã·ã§ã³ãè¡ããããŸã§ã管çãããŠããªããªãœãŒã¹ãä¿æãããã£ãŒãã£ã¯ã©ã¹ãããŒãã«ã€ã³ã¹ã¿ã³ã¹ãéæ¥çã«ã€ã³ã¹ã¿ã³ã¹åããããšã«ããããæ°ã¥ããŠããŸããã代ããã«ããããã®ã¹ããŒãã¡ã³ããã³ãŒãã£ã³ã°ããæ£ããæ¹æ³ã¯ãCore.Data ã€ã³ã¹ã¿ã³ã¹ãå€æ°ãšããŠæ瀺çã«ååŸãã䜿çšåŸã«ããããç Žæ£ããããšã§ããusing ã¹ããŒãã¡ã³ãã¯ããããå®çŸããããã®äŸ¿å©ãªæ¹æ³ã§ãã
using (FeatureClass featureClass = featureLayer.GetFeatureClass())
using (Geodatabase gdb = featureClass.GetDatastore() as Geodatabase)
{
// etc.
}
using (Table table = row.GetTable())
{
var id = table.GetID();
// etc.
}
using ã¹ããŒãã¡ã³ãã®ãã1ã€ã®å©ç¹ã¯ãusing ã®ã¹ã³ãŒãå ã§å®è¡ãããŠããã³ãŒããäŸå€ãã¹ããŒããå Žåã§ããDispose ã確å®ã«åŒã³åºãããããšã§ãã
èæ
®ãã¹ããã1ã€ã®ãŠãŒã¹ã±ãŒã¹ã¯ãAPI ã¡ãœããã Core.Data ãªããžã§ã¯ãã®ãªã¹ããè¿ãå Žåã§ããããšãã°ãIReadOnlyList <Dataset>
ãè¿ã Table.GetControllerDatasets()
ã«ã€ããŠèããŠã¿ãŸãããã®å Žåãusing ã¹ããŒãã¡ã³ãã§ã¯äžååã§ãããåãªã¹ãé
ç®ãåå¥ã«ç Žæ£ããå¿
èŠããããŸãã
IReadOnlyList<Dataset> controllerDatasets = table.GetControllerDatasets();
// Do something with the list
foreach (Dataset dataset in controllerDatasets)
{
dataset.Dispose();
}
ã€ã³ã¹ã¿ã³ã¹ã§ Dispose ãåŒã³åºããããšãã¢ã³ãããŒãžãªãœãŒã¹ïŒã»ãŒãã¹ãŠïŒã«ã¢ã¯ã»ã¹ããã¡ãœãããŸãã¯ããããã£ã®ãããããåŒã³åºããšãArcGIS.Core.ObjectDisconnectedException
ãçºçããŸãã
Geodatabase API ã®ã»ãšãã©ã®ã¯ã©ã¹ã¯ãArcGIS.Core.Data
åå空éã«ååšããŸããArcGIS.Core.Data
ã®å¿
èŠãªãªããžã§ã¯ãããã¢ãŒããã¯ãã£ã¹ã¿ãã¯ã®äžäœã¬ãã«ã§ ArcGIS Pro ãšçµ±åããå¿
èŠãããå ŽåããããŸãããã®ãããªå ŽåãC#æ¡åŒµã¡ãœãããæäŸãããŸãããããã®æ¡åŒµã¡ãœããã䜿çšããã«ã¯ïŒ
-
ArcGIS.Desktop.Extensions
ãžã®åç §ããœãªã¥ãŒã·ã§ã³ã«è¿œå ããŸã -
using ArcGIS.Core.Data.Extensions;
ããœãŒã¹ãã¡ã€ã«ã®å é ã«è¿œå ããŸã
ãããã®æé ã«ããããããã®æ¡åŒµã¡ãœãããããžãªããŒã¿ããŒã¹ã¯ã©ã¹ã®éåžžã®ã¡ãœããã§ãããã®ããã«è¡šç€ºã§ããŸãã
ãããã®æ¡åŒµã¡ãœããã¯ãArcGIS Pro ã¢ãã€ã³ã§ã®äœ¿çšãç®çãšããŠãããCoreHost ã¢ããªã±ãŒã·ã§ã³ã§ã¯äœ¿çšã§ããŸããã
Pro å
ã§ã¯ããžãªããŒã¿ããŒã¹ ã³ã³ãã³ãã¯ããã©ã«ããŒæ¥ç¶ããã¡ã€ã«ãã¹ããŸãã¯åç
§ãã€ã¢ãã°ã®ãããããä»ããŠãã£ã¹ã¯äžã§åç
§ãŸãã¯æ€çŽ¢ã§ããŸãããããã®å ŽåãããžãªããŒã¿ããŒã¹ ã³ã³ãã³ããåç
§ãŸãã¯æ€çŽ¢ãããšãArcGIS.Desktop.Core.Items
ãååŸãããŸããã¢ã€ãã ããåºã«ãªããžãªããŒã¿ããŒã¹ ããŒã¿ã»ããã«ã¢ã¯ã»ã¹ããã«ã¯ãProConcepts Content and Items ãåç
§ããŠãã ããã
Datastore ã¯ããã£ãŒãã£ã¯ã©ã¹ãã©ã¹ã¿ããŒã¿ã»ãããããã³ããŒãã«ã®ãããªç©ºéããã³é空éããŒã¿ã»ããã®ã³ã³ããã§ãã
ArcGIS.Core.Data API ã§ã¯ãDatastore ã¯ããŒã¿ã»ããã®ã³ã³ãããšããŠæ©èœãããããããªããžã§ã¯ããè¡šãæœè±¡ã¯ã©ã¹ã§ããäŸãã°ãGeodatabase 㯠Datastore ãç¶æ¿ãããã¡ã€ã« ãžãªããŒã¿ããŒã¹ãã¢ãã€ã« ãžãªããŒã¿ããŒã¹ããšã³ã¿ãŒãã©ã€ãº ãžãªããŒã¿ããŒã¹ãããã³ feature service ãžãªããŒã¿ããŒã¹ã® Datastore ã¿ã€ãããµããŒãããŸãããã¹ãŠã® Datastore
ã¿ã€ãããã¹ãŠã®ã¿ã€ãã®å±æ§ãã£ãŒã«ããã¹ãã¬ãŒãž ã¿ã€ã ããããã£ããµããŒãããŠããããã§ã¯ãªãããšã«æ³šæããããšãéèŠã§ããGetDatastoreProperties()
ã¡ãœãã㯠DatastoreProperties
ã¯ã©ã¹ãè¿ããã©ã® Datastore
ã¿ã€ããã©ã®ããããã£ããµããŒãããŠããããæå®ãããåæ§ã«ã Datastore
åã®äžã«ã¯ããŒã¿ã¹ãã¢ã®ããããã£ããµããŒãããŠããªããã®ããããŸãããµããŒããããŠãããã©ãã㯠Datastore.AreDatastorePropertiesSupported
ããããã£ãåŒã³åºãããšã§ç¢ºèªã§ããŸãã
// Check if a datastore supports datastore properties
bool areDatastorePropertiesSupported = geodatabase.AreDatastorePropertiesSupported();
if (areDatastorePropertiesSupported)
{
DatastoreProperties datastoreProperties = geodatabase.GetDatastoreProperties();
// Supports 64-bit integer field
bool supportsBigInteger = datastoreProperties.SupportsBigInteger;
// Supports pagination
bool supportsQueryPagination = datastoreProperties.SupportsQueryPagination;
// Supports datastore edit
bool canEdit = datastoreProperties.CanEdit;
// Supports 64-bit Object ID
bool supportsBigObjectId = datastoreProperties.SupportsBigObjectID;
// Supports DateOnly field
bool supportsDateOnly = datastoreProperties.SupportsDateOnly;
// Supports TimeOnly field
bool supportsTimeOnly = datastoreProperties.SupportsTimeOnly;
// Supports TimestampOffset field
bool supportsTimestampOffset = datastoreProperties.SupportsTimestampOffset;
}
泚ïŒDatastore ã¯ãArcObjects API ã® Workspace ãšæŠå¿µçã«åçã®æœè±¡åã§ãã
æŠå¿µçã«ã¯ãArcGIS ãžãªããŒã¿ããŒã¹ã¯ãå ±éã®ãã¡ã€ã«ã·ã¹ãã ãã©ã«ããŒã«ä¿æãããŠãããREST ãµãŒãã¹ã«ãã£ãŠç®¡çãããŠããããŸãã¯ãã«ããŠãŒã¶ãŒãªã¬ãŒã·ã§ãã« DBMSïŒOracleãMicrosoft SQL ServerãPostgreSQLãSAP HANAãIBM DB2 çïŒã«æ ŒçŽãããŠããããŸããŸãªã¿ã€ãã®å°çããŒã¿ã»ããã®ã³ã¬ã¯ã·ã§ã³ã§ãããžãªããŒã¿ããŒã¹ã«ã¯æ§ã ãªãµã€ãºãããããŠãŒã¶ãŒæ°ãæ§ã ã§ããã¡ã€ã«ãããŒã¹ã«ããå°èŠæš¡ãªã·ã³ã°ã«ãŠãŒã¶ãŒã®ããŒã¿ããŒã¹ãããå€ãã®ãŠãŒã¶ãŒãã¢ã¯ã»ã¹ãã倧èŠæš¡ãªã¯ãŒã¯ã°ã«ãŒããéšéãäŒæ¥ã®ãžãªããŒã¿ããŒã¹ãŸã§å¹ åºã察å¿ããŠããŸãã
ArcGIS.Core.Data API ã§ã¯ãGeodatabase ã¯ã©ã¹ã¯ ArcGIS ã®ãã€ãã£ãããŒã¿æ§é ãè¡šããç·šéãšããŒã¿ç®¡çã«äœ¿çšãããäž»èŠãªããŒã¿åœ¢åŒã§ããArcGISã¯ãå€æ°ã®å°çæ å ±ã·ã¹ãã ïŒGISïŒãã¡ã€ã«åœ¢åŒã®å°çæ å ±ãåŠçããŸããããžãªããŒã¿ããŒã¹ã®æ©èœãæäœããŠæŽ»çšããããã«èšèšãããŠããŸãã
ãã¡ã€ã« ãžãªããŒã¿ããŒã¹ãã¢ãã€ã« ãžãªããŒã¿ããŒã¹ããšã³ã¿ãŒãã©ã€ãº ãžãªããŒã¿ããŒã¹ãããã³ ãã£ãŒã㣠ãµãŒãã¹ ãžãªããŒã¿ããŒã¹ã¯ãGeodatabase ã¯ã©ã¹ã䜿çšããŠéãããšãã§ããŸãããã®ã¯ã©ã¹ã¯ãããŸããŸãªã¿ã€ãã®ãžãªããŒã¿ããŒã¹ããµããŒãããããã«ããªãŒããŒããŒããããã³ã³ã¹ãã©ã¯ã¿ãŒã®ãªã¹ããå ¬éããŸãã
ãã¡ã€ã« ãžãªããŒã¿ããŒã¹ãéãã«ã¯ã次ã®ããã« FileGeodatabaseConnectionPath ã®ã€ã³ã¹ã¿ã³ã¹ã Geodatabase ã³ã³ã¹ãã©ã¯ã¿ãŒã«æž¡ãå¿ èŠããããŸãã
Geodatabase fileGeodatabase = new Geodatabase(new FileGeodatabaseConnectionPath(new Uri(@"path\to\the\file\geodatabase")));
ã¢ãã€ã« ãžãªããŒã¿ããŒã¹ãéãã«ã¯ã MobileGeodatabaseConnectionPath ã®ã€ã³ã¹ã¿ã³ã¹ã次ã®ããã« Geodatabase ã³ã³ã¹ãã©ã¯ã¿ãŒã«æž¡ãå¿ èŠããããŸãã
Geodatabase mobileGeodatabase = new Geodatabase(new MobileGeodatabaseConnectionPath(new Uri(@"path\to\the\mobile\geodatabase")));
SDEæ¥ç¶ãã¡ã€ã« ãŸãã¯äžé£ã® æ¥ç¶ãããã㣠ã䜿çšããŠãšã³ã¿ãŒãã©ã€ãºãžãªããŒã¿ããŒã¹ãéãã«ã¯ã次ã®2ã€ã®æ¹æ³ããããŸãã
Geodatabase enterpriseGeodatabaseViaConnectionFile = new Geodatabase(new DatabaseConnectionFile(new Uri(@"path\to\the\sde\file")));
DatabaseConnectionProperties connectionProperties = new DatabaseConnectionProperties(EnterpriseDatabaseType.SQLServer)
{
AuthenticationMode = AuthenticationMode.DBMS,
Instance = "machineName\\instanceName",
Database = "databaseName",
User = "username",
Password = "Not1234"
Version = "dbo.DEFAULT"
};
Geodatabase enterpriseGeodatabaseViaConnectionProperties = new Geodatabase(connectionProperties);
äœè«ã§ãããæ¥ç¶ãã¡ã€ã«ããããæ¥ç¶ããããã£ãæœåºãããå Žåã¯ãéçã¡ãœããDatabaseClient.GetDatabaseConnectionProperties() ã䜿çšããŠãããå®è¡ã§ããŸããããã¯ãæ¥ç¶ãã¡ã€ã«å ã®ãŠãŒã¶ãŒããããã£ãšãã¹ã¯ãŒãããããã£ã眮ãæããå Žåã«åœ¹ç«ã¡ãŸãããŠãŒã¶ãŒåãšãã¹ã¯ãŒãã®æ å ±ãæ¬ èœããŠããæ¥ç¶ãã¡ã€ã«ã䜿çšããŠããšã³ã¿ãŒãã©ã€ãº ãžãªããŒã¿ããŒã¹ãžã®æ¥ç¶ãéãããšã¯ã§ããŸããã
ãžãªããŒã¿ããŒã¹ ãªããžã§ã¯ããååŸããå¥ã®æ¹æ³ã¯ãArcGIS.Core.Data.Dataset.GetDatastore() ã䜿çšããããšã§ããããã«ãããArcGIS.Core.Data.Datastore åç §ãè¿ãããŸãã åºã«ãªãããŒã¿ã¹ãã¢ããžãªããŒã¿ããŒã¹ã§ããå Žåã¯ãããããžãªããŒã¿ããŒã¹ã«ãã£ã¹ãããŠããžãªããŒã¿ããŒã¹ ã€ã³ã¿ãŒãã§ã€ã¹ã«ã¢ã¯ã»ã¹ã§ããŸãã
QueryDef ã¯ããžãªããŒã¿ããŒã¹ ããŒã¿ã¹ãã¢ã«ã¯ãšãªãå®è¡ããŠã«ãŒãœã«ãååŸã§ããããã«ããæ§é ã§ããQueryDef ã䜿çšãããšãwhere å¥ãprefix å¥ãpostfix å¥ããµããã£ãŒã«ããããã³ã¯ãšãªãå®è¡ããããŒãã«ãå«ãã¯ãšãªã«åºã¥ããŠãåäžã®ããŒãã«ããã«ãŒãœã«ãçæã§ããŸãããŸãããžãªããŒã¿ããŒã¹å ã®2ã€ä»¥äžã®ããŒãã«éã®çµåãäœæããããã«äœ¿çšããããšãã§ããŸãã
QueryDef ã¯ã©ã¹ã¯ãã¯ãšãªã®è©³çŽ° ãæå®ããããã®ããããã£ãæäŸããŸããGeodatabase ã¯ã©ã¹ã® Evaluate ã¡ãœããã¯ãQueryDef ãªããžã§ã¯ããåãåããã¯ãšãªãæºããè¡ãžã®ã¢ã¯ã»ã¹ãæäŸãã RowCursor ãè¿ããŸããEvaluate ã¡ãœããã«ã¯ãã«ãŒãœã«ããé£ç¶ããè¡ãè¿ããšãã«ãªãµã€ã¯ã«ã䜿çšãããã©ãããæå®ããããŒã« ãã©ã¡ãŒã¿ãŒããããŸãã
QueryDef queryDef = new QueryDef
{
Tables = "Highways",
WhereClause = "TYPE = 'Paved Undivided'",
};
using (RowCursor rowCursor = geodatabase.Evaluate(queryDef, false))
{
while (rowCursor.MoveNext())
{
using (Row row = rowCursor.Current)
{
Feature feature = row as Feature;
Geometry shape = feature.GetShape();
string type = Convert.ToString(row["TYPE"]); // Will be "Paved Undivided" for each row.
try
{
Table table = row.GetTable(); // Will always throw exception because rows retrieved from QueryDef do not have a parent table.
}
catch (NotSupportedException exception)
{
// Handle not supported exception.
}
}
}
}
以äžã¯ãQueryDef ã®è©äŸ¡ãå®è¡ããéã«èæ ®ãã¹ãããã€ãã®äºé ã§ãã
- ãšã³ã¿ãŒãã©ã€ãº ãžãªããŒã¿ããŒã¹ã® QueryDef ã®ãµããã£ãŒã«ãã«ã¯ãåãååã®åãè€æ°å«ããããšã¯ã§ããŸããã
- ãã£ãŒã«ããšã€ãªã¢ã¹ã¯ãQueryDef ã® Subfields ããããã£ã§ã¯ãµããŒããããŠããŸããã
- ãµããã£ãŒã«ãã« Shape ãã£ãŒã«ããæå®ãããŠããå ŽåãRowCursor.Current ããè¿ããããªããžã§ã¯ã㯠Feature ãªããžã§ã¯ãã§ãã
- çµåãå«ãŸããŠããå ŽåãQueryDef ã®è©äŸ¡ã§ã¯ãçµåã®å·ŠåŽã®ããŒãã«ã® Shape ãã£ãŒã«ãã®ã¿ããµããŒããããŸãã
泚ïŒãžãªã¡ããªã¯ äžå€ ã§ããããã.NET ã¬ããŒãžã³ã¬ã¯ã¿ã«ãã£ãŠç®¡çãããŸããIDisposable ãå®è£ ãã Row ãšåãæå³ã§ãªãµã€ã¯ã«å¯èœã§ã¯ãããŸããïŒãªãµã€ã¯ã«ã§ã¯ãã¡ã¢ãªãåå©çšãããåã«ãªããžã§ã¯ãã®åŠçãå®äºããããšãæ³å®ãããŸãããã«ãã¹ã¬ããç°å¢ã§ã¯ãåæã«äœ¿çšã§ãããããããã¯ã§ããŸããïŒãå°æ¥ã®ãªãªãŒã¹ã§ã¯ããžãªã¡ããªã®ãªãµã€ã¯ã«ã®ãµããŒããè¿œå ãããå¯èœæ§ããããŸãã
ã¯ãšãªããŒãã«ã¯ãåã ãžãªããŒã¿ããŒã¹ã®1ã€ä»¥äžã®ããŒãã«ãå«ãã¯ãšãªãè¡šãä»®æ³ããŒãã«ã§ããã¯ãšãªããŒãã«ãäœæããããšãshape åãå«ãŸããŠãããã©ããã«å¿ããŠãèªã¿åãå°çšããŒãã«ãŸãã¯ãã£ãŒãã£ã¯ã©ã¹ãšããŠè¿ãããŸããã¯ãšãªããŒãã«ã®äž»ãªçšéã®ããã€ãã¯ãã¯ãšãªããŒãã«ãã¬ã€ã€ãŒãšããŠãããã«è¿œå ããä»ã®èªã¿åãå°çšããŒãã«ãŸãã¯ãã£ãŒãã£ã¯ã©ã¹ãšããŠäœ¿çšããŠæ€çŽ¢ãå®è¡ããããŒãã«ã䜿çšããŠãžãªããã»ã·ã³ã°åæããŒã«ãæäœããããšã§ããQueryTable ã«å¯Ÿããéžæã¯ããšã³ã¿ãŒãã©ã€ãº ãžãªããŒã¿ããŒã¹ã§ã¯ãµããŒããããŠããŸããããããã«è¿œå ãããšãã¯ãšãªããŒãã«ã¯ä¿åæã«ãããžã§ã¯ãå ã«ä¿æãããŸããã¯ãšãªã«å«ãŸããããŒãã«ã«å€æŽãå ããããå Žåãããã¯ä»®æ³ããŒãã«ã§ãããããã¯ãšãªããŒãã«ã«åæ ãããŸãã
ã¯ãšãªããŒãã«ãäœæããããã®æåã®ã¹ãããã¯ãQueryDef ãäœæããããšã§ãã次ã«ãQueryDef ã䜿çšã㊠QueryTableDescription ãäœæããŸããèšå®ã§ãããã®ä»ã®ããããã£ã«ã¯ãã¯ãšãªããŒãã«ã®ååãããã³ ObjectID ãäœæããããã®ããŒãã£ãŒã«ãã®ã³ã³ãåºåããªã¹ããå«ãŸããŸããMakeCopy ããŒã« ããããã£ã true ã«èšå®ãããŠããŠãããŒãã£ãŒã«ããèšå®ãããŠããªãå ŽåãããŒã¿ã®ããŒã«ã« ã¯ã©ã€ã¢ã³ãåŽã®ã³ããŒãã¯ãšãªããŒãã«ã®çæã«äœ¿çšãããŸããæåŸã«ãQueryTableDescription ã䜿çšããŠãGeodatabase.OpenQueryTable(QueryTableDescription) ãåŒã³åºã㊠ArcGIS.Core.Data.Table ãååŸããŸãã
using (Geodatabase geodatabase = new Geodatabase(new FileGeodatabaseConnectionPath(new Uri("path\\to\\gdb"))))
{
QueryDef queryDef = new QueryDef
{
Tables = "CommunityAddress JOIN MunicipalBoundary on CommunityAddress.Municipality = MunicipalBoundary.Name",
SubFields = "CommunityAddress.OBJECTID, CommunityAddress.Shape, CommunityAddress.SITEADDID, CommunityAddress.ADDRNUM, CommunityAddress.FULLNAME, CommunityAddress.FULLADDR, CommunityAddress.MUNICIPALITY, MunicipalBoundary.Name, MunicipalBoundary.MUNITYP, MunicipalBoundary.LOCALFIPS",
};
QueryTableDescription queryTableDescription = new QueryTableDescription(queryDef)
{
Name = "CommunityAddrJounMunicipalBoundr",
PrimaryKeys = geodatabase.GetSQLSyntax().QualifyColumnName("CommunityAddress", "OBJECTID")
};
Table queryTable = geodatabase.OpenQueryTable(queryTableDescription);
}
Database ããŒã¿ã¹ãã¢ã¯ããšã³ã¿ãŒãã©ã€ãº ããŒã¿ããŒã¹ãŸã㯠SQLite ããŒã¿ããŒã¹ ãè¡šããŸããããŒãã«ãšãã£ãŒãã£ã¯ã©ã¹ãéããå®çŸ©ã®ååŸãããŒãã«ã®äžèŠ§è¡šç€ºãªã©ã®ããŒã¿ããŒã¹æ©èœãžã®ã¢ã¯ã»ã¹ãæäŸããŸãããããŒãžã§ã³ç®¡çãã¢ãŒã«ã€ããæŽåãã§ãã¯ããªã¬ãŒã·ã§ã³ã·ããã¯ã©ã¹ãªã©ã®ãžãªããŒã¿ããŒã¹æ©èœã¯ãµããŒãããŠããŸããããšã³ã¿ãŒãã©ã€ãº ãžãªããŒã¿ããŒã¹ã¯ããŒã¿ããŒã¹ ããŒã¿ã¹ãã¢ãä»ããŠéãããšãã§ããŸãããããŒã¿ããŒã¹ã«é¢é£ä»ããããæ©èœãžã®ã¢ã¯ã»ã¹ã®ã¿ãæäŸããããããã®ã¢ãããŒãã¯ãå§ãããŸããã
ããŒã¿ããŒã¹ ããŒã¿ã¹ãã¢ã®ã€ã³ã¹ã¿ã³ã¹ã¯ã次ã®ã¿ã€ãã® Connector ã䜿çšãã3ã€ã®ã³ã³ã¹ãã©ã¯ã¿ã®ããããã䜿çšããŠéãããšãã§ããŸã -- DatabaseConnectionPropertiesã DatabaseConnectionFileã SQLiteConnectionPathã
DatabaseConnectionProperties ã¯ããšã³ã¿ãŒãã©ã€ãº ããŒã¿ããŒã¹ ãã©ãããã©ãŒã ïŒEnterpriseDatabaseType åæåã§æå®ïŒãæå®ãããã®ãã©ãããã©ãŒã ã«åºæã®æ¥ç¶ã®è©³çŽ°ã¯ãDatabaseConnectionProperties ã®ããããã£ã䜿çšããŠæå®ã§ããŸãã
// SQL Server
DatabaseConnectionProperties databaseConnectionProperties = new DatabaseConnectionProperties(EnterpriseDatabaseType.SQLServer)
{
AuthenticationMode = AuthenticationMode.DBMS,
Instance = "machine\\instance",
Database = "database",
User = "username",
Password = "password"
};
Database database = new Database(databaseConnectionProperties);
DatabaseConnectionFile ã¯ã.sde æ¥ç¶ãã¡ã€ã«ã®ãã¡ã€ã«ã®å Žæãžã® URI ãåãåããŸãã
Database database = new Database(new DatabaseConnectionFile(new Uri("path\\to\\.sde\\file")));
SQLiteConnectionPath ã¯ãSQLite ããŒã¿ããŒã¹ãã¡ã€ã«ã®å Žæãžã® URI ãåãåããŸãã
Database database = new Database(new SQLiteConnectionPath(new Uri("path\\to\\sqlite\\file")));
ã¯ãšãªã¬ã€ã€ãŒã䜿çšãããšãSQL ã¯ãšãªã®çµæã«èªã¿åãå°çšã®ããŒãã«ãŸãã¯ãã£ãŒãã£ã¯ã©ã¹ãšããŠã¢ã¯ã»ã¹ã§ããŸãã次ã®æé ã䜿çšããŠãã¯ãšãªã¬ã€ã€ãŒãäœæããŸãã
- Database.GetQueryDescription ã䜿çšã㊠QueryDescription ãäœæããŸããQueryDescription ã«ã€ããŠã¯ããã®ã»ã¯ã·ã§ã³ã®åŸåã§è©³ãã説æããŸãã
- ãªããžã§ã¯ã ID åãshape ã¿ã€ããSR IDã空éåç §ãªã©ã®è©³çŽ°ã䜿çšããŠãQueryDescription ãå€æŽããŸãïŒã¯ãšãªã«ãã£ãŠã¯äžèŠãªå ŽåããããŸãïŒã
- QueryDescription ã Database.OpenTable ã«æž¡ããŠãã¯ãšãªã¬ã€ã€ãŒãè¡šãããŒãã«ãŸãã¯ãã£ãŒãã£ã¯ã©ã¹ãååŸããŸãã
ã¯ãšãªã¬ã€ã€ãŒã®èŠä»¶ã®1ã€ã¯ãäžæã® ID ãå¿ èŠã§ããããšã§ããããã¯ãèªç¶ãªãŠããŒã¯ IDïŒArcGIS ã§ãªããžã§ã¯ã ID ãšããŠäœ¿çšãããæ¢åã®ãã£ãŒã«ãïŒãŸãã¯ããããããäžæã® IDïŒ1ã€ä»¥äžã®æ¢åã®ãã£ãŒã«ãã®å€ãæŽæ°ã«ãããã³ã°ããããšã«ãã£ãŠäœæãããä»®æ³ãã£ãŒã«ãïŒã«ããããšãã§ããŸããã¯ãšãªã®çµæã«ã¯ã次ã®ãããããå«ãŸããŠããå¿ èŠããããŸãã
- null ãèš±å¯ããªãæŽæ°ãã£ãŒã«ãïŒèªç¶ãªãŠããŒã¯ IDïŒ
- äžæã®ã¿ãã«ïŒããããããäžæã® IDïŒã«ãªã1ã€ä»¥äžã®æŽæ°ãæååããŸã㯠GUID ãã£ãŒã«ãã®çµã¿åãã
次ã®è¡šã§ã¯ãåå¥ã«äžæã§ã¯ãªãããäžæã®ã¿ãã«ã圢æããïŒnull å€ãå«ãŸãªãïŒæååãã£ãŒã«ããšæŽæ°ãã£ãŒã«ããå«ãã¯ãšãªçµæã ID ãããã³ã°ã«äœ¿çšã§ããŸãã
County | State | ESRI_OID |
---|---|---|
Adams | Colorado | 0 |
Adams | Ohio | 1 |
Addison | Vermont | 2 |
次ã®èŠä»¶ãšå¶éãé©çšãããŸãã
- äžææ§ - åäžã®ãã£ãŒã«ãïŒèªç¶ãŸãã¯ãããïŒã䜿çšããå Žåããã¹ãŠã®å€ãäžæã§ããå¿ èŠããããŸããè€æ°ã®ãã£ãŒã«ãã䜿çšããå Žåãåè¡ã®ã¿ãã«ã¯äžæã§ããå¿ èŠããããŸããäžæã§ãªãå€ããããã³ã°ã«äœ¿çšãããŠããå Žåããšã©ãŒã¯çºçããŸããããäºæããªãåäœãçºçããåæçµæãæ£ãããªãå¯èœæ§ããããŸãã
- null å€ãªã - ãããããã ID ã䜿çšãããŠããå ŽåãID ã®äœæã«äœ¿çšããããã£ãŒã«ãã« null å€ãå«ããããšã¯ã§ããŸãããnull å€ã䜿çšãããšããããã³ã°äžã«ãšã©ãŒãçºçããŸãã
- è² ã®èªç¶å€ - èªç¶ãªãŠããŒã¯ ID ã䜿çšããå Žåããã£ãŒã«ãã«è² ã®å€ãå«ããããšã¯ã§ããŸãããèªç¶ãªãŠããŒã¯ ID ã0æªæºã®è¡ã¯ç¡èŠãããŸãã
- ãžãªã¡ã㪠ãã£ãŒã«ã-ãžãªã¡ã㪠ãã£ãŒã«ãã¯å¿ èŠãããŸãããçµæã»ããã«ã¯ãæ倧1ã€ã®ãžãªã¡ã㪠ãã£ãŒã«ããå«ããããšãã§ããŸãã
èŠããŠããã¹ã1ã€ã®ç¹å¥ãªã±ãŒã¹ã¯ãåã shape ãã£ãŒã«ãå ã®è€æ°ã®ãžãªã¡ããªã¿ã€ãã§ããããã¯éåžžãArcGIS Pro ã§ã¯ç¡å¹ã§ããã1ã€ã®ã¿ã€ãã®è¡ã®ã¿ã䜿çšããããã«æå®ããããšã§ã¯ãšãªã¬ã€ã€ãŒãäœæã§ããŸããããšãã°ãshape åã«ãã€ã³ã ãžãªã¡ããªãšããªãŽã³ ãžãªã¡ããªã®äž¡æ¹ãããå ŽåãQueryDescription.SetShapeType(GeometryType) ã¡ãœããã䜿çšããŠããã®ã¯ãšãªã¬ã€ã€ãŒã§èæ ®ãããžãªã¡ããªã¿ã€ããæå®ã§ããŸãã
QueryDescription ã¯ãã¯ãšãªã¬ã€ã€ãŒãè¡šãããŒãã«ãŸãã¯ãã£ãŒãã£ã¯ã©ã¹ã®äœæã«äœ¿çšãããäžéãªããžã§ã¯ãã§ããåã«èª¬æããããã«ãQueryDescription ã¯Database.GetQueryDescription ã¡ãœããããååŸãããŸãããã®ã¡ãœããã¯ãå¯èœã§ããã°ã¯ãšãªã®èª¬æã®ããããã£ãèªåæ€åºããŸããããšãã°ãã¯ãšãªçµæ㧠null ãèš±å¯ããªãæŽæ°ãã£ãŒã«ããèŠã€ãã£ãå ŽåãQueryDescription.IsObjectIDMappedColumnRequired() 㯠false ã«ãªãã QueryDescription.GetObjectIDField() ã¯éžæãããæŽæ°ãã£ãŒã«ããæå®ããŸããID ãããã³ã°ãå¿ èŠã§ãé©åãªãããã³ã° ãã£ãŒã«ããèªåçã«æ±ºå®ã§ããªãå ŽåãQueryDescription.IsObjectIDMappedColumnRequired() 㯠true ã«ãªããQueryDescription.SetObjectIDFields() ã䜿çšããŠãã¯ãšãªã¯ã©ã¹ã®äœæã«äœ¿çšããåã«ãããããããäžæã® ID ãæå®ããå¿ èŠããããŸãã
GetQueryDescription ã¡ãœããã«ã¯ã次ã®3ã€ã®ãªãŒããŒããŒãããããŸãã
- GetQueryDescription(string tableName) - tableName åŒæ°ã§æå®ãããåäžã®ïŒã€ãŸããã¹ã¿ã³ãã¢ãã³ã®ïŒããŒãã«ã«é¢é£ä»ãããã QueryDescription ãªããžã§ã¯ããäœæããŸããã€ãŸããçµæã®ãªããžã§ã¯ãã«ãããShapeTypeãSpatialReference ãªã©ã®ãã©ã¡ãŒã¿ãŒã®ããã©ã«ãã®æšè«ã䜿çšããŠãããŒã¿ããŒã¹ããŒãã«ã®ãã¹ãŠã®ãã£ãŒã«ãã䜿çšããŠã¯ãšãªã¬ã€ã€ãŒãäœæãããŸãã
- GetQueryDescription(ArcGIS.Core.Data.Table) - ArcGIS.Core.Data.Table ãžã®åç §ãäžããããå Žåããã®ã¡ãœããã䜿çšããŠãããŒãã«åç §ã«ãã£ãŠè¡šããã察å¿ããã¯ãšãªã¬ã€ã€ãŒã®ãã©ã¡ãŒã¿ãŒãæ€åºã§ããŸããããã¯ãå¥ã®ã¯ãšãªã¬ã€ã€ãŒãè¡šãå¥ã®ããŒãã«ãŸãã¯ãã£ãŒãã£ã¯ã©ã¹ãäœæããåã«ãã¯ãšãªã®èª¬æãã«ã¹ã¿ãã€ãºããå Žåã«ã圹ç«ã¡ãŸãã
- GetQueryDescription(string queryStatement, string queryLayerName) - ã«ã¹ã¿ã ãã£ãŒã«ããŸãã¯è€æ°ã®ããŒãã«éã®çµåãæã€ã¯ãšãªã¬ã€ã€ãŒãå¿ èŠãªå Žåããã®ã¡ãœããã®æåã®ãã©ã¡ãŒã¿ãŒã¯å¿ èŠãªã¯ãšãªãæå®ããæååã§ããã2çªç®ã®ãã©ã¡ãŒã¿ãŒã¯çµæã®ã¯ãšãªã¬ã€ã€ãŒã®ååã§ãã
QueryDescription ãªããžã§ã¯ãã¯ãã¯ãšãªçµæãã©ã®ããã«ãªããã決å®ããããã«äœ¿çšã§ããããã€ãã®ã²ãã¿ãŒãå®çŸ©ããŸããããšãã°ãQueryDescription.GetFields() ã¡ãœããã¯ãã¯ãšãªçµæã®èªã¿åãå°çšãªã¹ããè¿ããŸããQueryDescriptionã¯ãã¯ãšãªã¬ã€ã€ãŒã®äœææ¹æ³ãå®çŸ©ããããã«äœ¿çšã§ãã次ã®ã²ãã¿ãŒ/ã»ãã¿ãŒãå®çŸ©ããŸãã
- GetSpatialReference/SetSpatialReference - ãã£ãŒãã£ã¯ã©ã¹ãäœæããããšãã«é©çšããã空éåç §ã空éåç §ãå®çŸ©ããã«ã¯ãSetSpatialReference ã¡ãœããã䜿çšããå¿ èŠããããŸãã
- GetShapeType/SetShapeType - shape ãã£ãŒã«ãã«ãããžãªã¡ããªã®ã¿ã€ããshape ãã£ãŒã«ãã«è€æ°ã®ãžãªã¡ããªã¿ã€ããå«ãŸããŠããå Žåããã®ããããã£ãèšå®ãããšãã¯ãšãªã¯ã©ã¹ããååŸãããè¡ã®ãµãã»ãããæå®ãããŸãïŒåäžã®ãžãªã¡ããªã¿ã€ãã«äžèŽããè¡ã®ã¿ã䜿çšã§ããŸãïŒã
- GetObjectIDFields/SetObjectIDFields - èªç¶ãª ID åãèŠã€ãã£ãå ŽåãGetObjectIDFields ã¯ãã®ååãè¿ããŸãããããã³ã°ãå¿ èŠãªå Žåã¯ãSetObjectIDFields ã¡ãœããã䜿çšããŠã䜿çšãããã£ãŒã«ããæå®ããå¿ èŠããããŸãã
- GetSRID/SetSRID - äœææã«ãã£ãŒãã£ã¯ã©ã¹ã«é©çšããã空éåç §ã«å¯Ÿå¿ããSRIDãSRID ãæå®ããã«ã¯ãSetSRID ã䜿çšããå¿ èŠããããŸãã
Geodatabase ã¯ã©ã¹ã¯ããã£ãŒã㣠ãµãŒãã¹ïŒããªãã¡ãWeb ãžãªããŒã¿ããŒã¹ïŒãè¡šãããã®ãµãŒãã¹ã«å«ãŸããããŒã¿ã»ãããžã®ã¢ã¯ã»ã¹ãæäŸããããšãã§ããŸããGeodatabase ã¯ã©ã¹ã«ã¯ãServiceConnectionProperties ãªããžã§ã¯ããåãåããªãŒããŒããŒããããã³ã³ã¹ãã©ã¯ã¿ãŒããããŸãããã®ã³ã³ã¹ãã©ã¯ã¿ãŒã¯ããã£ãŒã㣠ãµãŒãã¹ãžã® URL ãšããªãã·ã§ã³ã§ããã£ãŒã㣠ãµãŒãã¹ã«æ¥ç¶ããããã®è³æ Œæ å ±ãæå®ããŸããè³æ Œæ å ±ãå¿ èŠãã©ããã¯ããã£ãŒã㣠ãµãŒãã¹ã®é 眮ã¿ã€ãã«ãã£ãŠç°ãªããŸãã
ãã£ãŒãã£ãµãŒãã¹ããã¹ãã§ãã3çš®é¡ã®ç°å¢ã¯æ¬¡ã®ãšããã§ãã
- ArcGIS Online
- ArcGIS Enterprise ããŒã¿ã«ãšãã§ãã¬ãŒã·ã§ã³ããã ArcGIS Server ãµã€ã
- ã¹ã¿ã³ãã¢ãã³ã® ArcGIS Server ãµã€ãïŒããŒã¿ã«ãšãã§ãã¬ãŒã·ã§ã³ãããŠããªãïŒ
ArcGIS Online ã§ãã¹ããããŠãããã£ãŒã㣠ãµãŒãã¹ã®å Žåããã£ãŒã㣠ãµãŒãã¹æ¥ç¶ã¯ããŠãŒã¶ãŒã ArcGIS Pro ã«ãµã€ã³ã€ã³ãããšãã«äœ¿çšãã ArcGIS Online ã¯ã¬ãã³ã·ã£ã«ã䜿çšããŸããEnterprise ããŒã¿ã«ãšãã§ãã¬ãŒã·ã§ã³ããã ArcGIS Server ãµã€ãã®ãã£ãŒã㣠ãµãŒãã¹ã®å ŽåãArcGIS Pro ã§ããŒã¿ã«æ¥ç¶ãè¿œå ãããšãã«ããŠãŒã¶ãŒãè³æ Œæ å ±ãæå®ããå¿ èŠããããŸãã詳现ã«ã€ããŠã¯ã ããŒã¿ã«æ¥ç¶ã®è¿œå ãåç §ããŠãã ããã
ServiceConnectionProperties serviceConnectionProperties = new ServiceConnectionProperties(new Uri("http://federated-server.com/server/rest/services/Hosted/CampusEditing/FeatureServer"));
Geodatabase geodatabase = new Geodatabase(serviceConnectionProperties);
ã¹ã¿ã³ãã¢ãã³ã® ArcGIS Server ãµã€ãïŒEnterprise ããŒã¿ã«ãšãã§ãã¬ãŒã·ã§ã³ãããŠããªãïŒã§ãã¹ããããŠãããã£ãŒã㣠ãµãŒãã¹ã®å Žåãã¯ã¬ãã³ã·ã£ã«ãServiceConnectionProperties ãªããžã§ã¯ãã® User ããããã£ãš Password ããããã£ã«å²ãåœãŠãŠæž¡ãå¿ èŠããããŸãã
ServiceConnectionProperties serviceConnectionProperties = new ServiceConnectionProperties(new Uri("https://non-federated-server.com/arcgis/rest/services/UnitedStatesWest/FeatureServer"))
{
User = "username",
Password = "password",
};
Geodatabase geodatabase = new Geodatabase(serviceConnectionProperties);
ã·ã§ãŒããã¡ã€ã«ã¯ãå°ççãã£ãŒãã£ã®å¹ŸäœåŠçäœçœ®ãšå±æ§æ å ±ãæ ŒçŽããããã®åçŽãªéããããžåœ¢åŒã§ããã·ã§ãŒããã¡ã€ã«ã®å°ççãã£ãŒãã£ã¯ããã€ã³ããã©ã€ã³ããŸãã¯ããªãŽã³ïŒãšãªã¢ïŒã§è¡šãããšãã§ããŸããã·ã§ãŒããã¡ã€ã«ãå«ãããŒã¿ã¹ãã¢ã«ã¯ãã·ã§ãŒããã¡ã€ã«ã®ãã£ãŒãã£ã«çµåã§ããè¿œå ã®å±æ§ãæ ŒçŽã§ãã dBASE ããŒãã«ãå«ããããšãã§ããŸãã
FileSystemDatastore ãä»ããŠã·ã§ãŒããã¡ã€ã«ã§ãµããŒããããããŒã¿åã¯ãããŒãã« ãšãã£ãŒãã£ã¯ã©ã¹ ã®ã¿ã§ãããã£ãŒãã£ã¯ã©ã¹ãšããŒãã«ãé€ããŠãã»ãšãã©ã®ããŒã¿ã»ããã¿ã€ãã¯ã·ã§ãŒããã¡ã€ã« ããŒã¿ã¹ãã¢ã§ãµããŒããããŠããŸãããããšãã°ããªã¬ãŒã·ã§ã³ã·ããã¯ã©ã¹ããã£ãŒãã£ããŒã¿ã»ãããã·ã§ãŒããã¡ã€ã« ããŒã¿ã¹ãã¢ã§éãããšã¯ã§ããŸãããããã«ããã£ãŒãã£ããŒã¿ã»ãããå¿ èŠãšããããŒã¿ã»ããïŒããããžããŠãŒãã£ãªãã£ãããã¯ãŒã¯ãªã©ïŒãéãããšãã§ããŸããã
以äžã«ã¯ãèæ ®ãã¹ãããã€ãã®å¶éãå«ãŸããŠããŸãã
- ãšã€ãªã¢ã¹åãšã¢ãã«åã¯ãµããŒããããŠããŸããïŒããã«ã¯ããŒã¿ã»ãããšãã£ãŒã«ããå«ãŸããŸãïŒã
- ã·ã§ãŒããã¡ã€ã«ã®é·ããšé¢ç©ã®ãã£ãŒã«ãã¯ç¶æãããŸããã
- ã¢ãããŒã·ã§ã³ ãã£ãŒãã£ã¯ã©ã¹ãšãã£ã¡ã³ã·ã§ã³ ãã£ãŒãã£ã¯ã©ã¹ã¯ãµããŒããããŠããŸããã
- QueryDef ã¯ãµããŒããããŠããŸããã
- ãã¡ã€ã³ãšã«ãŒã«ã¯ãµããŒããããŠããŸããã
- ã·ã§ãŒããã¡ã€ã«ã§ z å€ãæå¹ã«ããã«ã¯ãm å€ãæå¹ã«ããå¿ èŠããããŸãã
- ã·ã§ãŒããã¡ã€ã«ã® DateTime ãã£ãŒã«ãå€ã¯æ¬åœã® DateTime å€ã§ã¯ãããŸããããããããããã¯æ¥ä»å€ã®ã¿ã§ããDateTime å€ãã·ã§ãŒããã¡ã€ã«ã® DateTime ãã£ãŒã«ãã«æ ŒçŽãããŠããå Žåãå€ã®æ¥ä»éšåã¯æ£ããç¶æãããŸãããæéå€ã¯ç¶æãããŸãããã·ã§ãŒããã¡ã€ã«ã§ DateTime å€ãã¢ãã«åããã«ã¯ãå€ã®æééšåãæ ŒçŽãã1ã€ä»¥äžã®è¿œå ãã£ãŒã«ããäœæããŸããããšãã°ã1ã€ã®ãã£ãŒã«ãã䜿çšããŠæ·±å€ããã®ç§æ°ãæ ŒçŽãããã3ã€ã®ãã£ãŒã«ãã䜿çšããŠæéãåãç§ãåå¥ã«æ ŒçŽãããã§ããŸãã
- Null å€ã¯ã·ã§ãŒããã¡ã€ã«ã§ã¯ãµããŒããããŠããŸããããããåé¿ããããã®1ã€ã®ã¢ãããŒãã¯ãéåžžã¯ããŒã¿ã§çºçããªãå€ã䜿çšã㊠null ãè¡šãããšã§ããããšãã°ãéœåžãå«ãã·ã§ãŒããã¡ã€ã«ã§ã¯ãå€ â9999 ã䜿çšã㊠nullïŒäžæïŒã®äººå£ãè¡šãããšãã§ããŸãã
- ã€ã³ããã¯ã¹åã¯ã·ã§ãŒããã¡ã€ã«ã§ã¯ç¶æãããŸããããããã¯ãããããäœæããããã£ãŒã«ããšåãååã«ãªããŸãã
- Table/FeatureClass ã® Validate ã¡ãœããã¯ãµããŒããããŠããŸããã
- Table/FeatureClass ã® Differences ã¡ãœããã¯ãµããŒããããŠããŸããã
ã·ã§ãŒããã¡ã€ã«ã¯ãFileSystemDatastore ã³ã³ã¹ãã©ã¯ã¿ãŒã䜿çšããŠéãããšãã§ããŸãããã®ã³ã³ã¹ãã©ã¯ã¿ãŒã¯ãFileSystemDatastoreType.Shapefile ãæå®ããã FileSystemConnectionPath ãåãåããŸãã
FileSystemConnectionPath connectionPath = new FileSystemConnectionPath(new Uri("path\\to\\shapefiles\\directory"), FileSystemDatastoreType.Shapefile);
FileSystemDatastore shapefile = new FileSystemDatastore(connectionPath);
OpenDataset<T> ãžã§ããªãã¯ã¡ãœããã䜿çšããŠãTable ãŸã㯠FeatureClass ãéãããšãã§ããŸãã T 㯠Table ãŸã㯠FeatureClass ã§ããå¿ èŠããããŸããT ãä»ã®ã¿ã€ãã®å ŽåãInvalidOperationException ãã¹ããŒãããŸãã OpenDataset ã¡ãœããã¯ããã¡ã€ã«æ¡åŒµåã®æç¡ã«ããããããã·ã§ãŒããã¡ã€ã«ã§åŒã³åºãããšãã§ããŸãã OpenDataset ã¡ãœããã .shp ãã¡ã€ã«ã§åŒã³åºãããå Žåãè¿ããããªããžã§ã¯ã㯠FeatureClass ã§ãããFeatureClass åç §ã«ãã£ã¹ãã§ããŸãã OpenDataset ã¡ãœããã .dbf ãã¡ã€ã«ã§åŒã³åºãããå ŽåïŒå¯Ÿå¿ãã .shp ãã¡ã€ã«ããªãå ŽåïŒãè¿ããããªããžã§ã¯ã㯠Table ãªããžã§ã¯ãã§ãã
ã·ã§ãŒããã¡ã€ã« FeatureClass ãŸã㯠Table ã«é¢ããã¡ã¿ããŒã¿ãååŸããã«ã¯ãGetDefinition<T> ãžã§ããªãã¯ã¡ãœããã䜿çšããŠããã£ãŒã«ããã€ã³ããã¯ã¹ããã£ãŒãã£ã¯ã©ã¹åããªããžã§ã¯ã ID ãã£ãŒã«ãåãªã©ã®è©³çŽ°ãæäŸããå®çŸ©ãååŸã§ããŸãã T 㯠TableDefinition ãŸã㯠FeatureClassDefinition ã§ããå¿ èŠããããŸããT ãä»ã®ã¿ã€ãã®å ŽåãInvalidOperationException ãã¹ããŒãããŸããã·ã§ãŒããã¡ã€ã« ãã£ãŒãã£ã¯ã©ã¹ããååŸãã Definition ã¯ã©ã¹ã®ã¡ãœããã®ãã¡ããµããŒããããŠããªããã®ã¯ä»¥äžã®éãã§ãã
- GetAliasName
- GetModelName
- GetCreatedAtField
- GetCreatorField
- GetDefaultSubtypeCode
- GetSubtypeField
- GetSubtypes
- GetEditedAtField
- GetEditorField
- GetGlobalIDField
- HasGlobalID
- IsEditorTrackingEnabled
- IsTimeInUTC
- GetAreaField
- GetLengthField
FileSystemConnectionPath connectionPath = new FileSystemConnectionPath(new Uri("path\\to\\shapefiles\\directory"), FileSystemDatastoreType.Shapefile);
FileSystemDatastore shapefile = new FileSystemDatastore(connectionPath);
FeatureClass footPrints = shapefile.OpenDataset<FeatureClass>("BuildingFootprints");
FeatureClass easements = shapefile.OpenDataset<FeatureClass>("Easements.shp"); // The name can be provided with or without the extension.
TableDefinition easementsDefinition = shapefile.GetDefinition<TableDefinition>("Easements");
ã·ã§ãŒããã¡ã€ã«ã«ã¯åžžã«ãObjectID ãšåãæ¹æ³ã§äžè¬çã«äœ¿çšã§ãã Feature IDïŒFIDïŒãã£ãŒã«ããå«ãŸããŠããŸãã ããšãã°ãã·ã§ãŒããã¡ã€ã«ããååŸãããã£ãŒãã£ã¯ã©ã¹ããäœæããã Selection ãªããžã§ã¯ãã¯ãObjectID ã®ä»£ããã« FID ã䜿çšããŸããObjectID ãšåæ§ã«ãFID ã¯ç·šéã§ãããFID ãã£ãŒã«ãã®IField.Type ã®å€ã¯ esriFieldTypeOID ã®å€ãè¿ããŸãã
ObjectID ãš FID ã®äž»ãªéãã¯ãObjectID ã¯ãžãªããŒã¿ããŒã¹å ã®ãã£ãŒãã£ãŸãã¯è¡ã®æ°žç¶çãªèå¥åã§ããã®ã«å¯ŸããFID ã¯åã«ã·ã§ãŒããã¡ã€ã«å ã®ãã£ãŒãã£ãŸãã¯è¡ã®çŸåšã®ïŒãŒãããŒã¹ã®ïŒäœçœ®ãè¡šãããšã§ããããã¯ããã£ãŒãã£ããŸã£ããå€æŽãããŠããªãå Žåã§ããã»ãã·ã§ã³ããšã«ç°ãªã FID ãæã€ããšãã§ããããšãæå³ããŸãã
次ã®è¡šã«ç€ºãããã«ãæŽæ°ãã£ãŒã«ããš3ã€ã®ãã€ã³ããã£ãŒãã£ãæã€ã·ã§ãŒããã¡ã€ã«ã«ã€ããŠèããŠã¿ãŸãã
Feature ID | Object ID |
---|---|
0 | 0 |
1 | 1 |
2 | 2 |
ç·šéãä¿åãããåŸã« FID ã1ã®ãã£ãŒãã£ãåé€ããããšãã·ã§ãŒããã¡ã€ã«ã®å±æ§ããŒãã«ã¯æ¬¡ã®è¡šã«ç€ºãããã«å€æŽãããŸãã
Feature ID | Object ID |
---|---|
0 | 0 |
1 | 2 |
ã¯ãŒã¯ãããŒã§ãã£ãŒãã£ã«éçèå¥åãå¿ èŠãªå Žåã¯ãFID ãã£ãŒã«ã以å€ã®æŽæ°ãã£ãŒã«ãã䜿çšããŠãã ããã
ã·ã§ãŒããã¡ã€ã«ã¯ããžãªããŒã¿ããŒã¹ã«é¢é£ããŠäœ¿çšã§ãããã£ãŒã«ãã®ã¿ã€ãã«å¶éããããŸããããšãã°ã次ã®ãã£ãŒã«ãã¿ã€ãã¯ãµããŒããããŠããŸããã
- ã°ããŒãã«äžæèå¥åïŒGUIDïŒ
- GlobalID
- ãã€ã㪠ã©ãŒãž ãªããžã§ã¯ãïŒBLOBïŒ
- ã©ã¹ã¿ãŒ
ããã«ããã£ãŒã«ãåã¯10æåã«å¶éãããŠãããåè¿°ã®ããã«ããšã€ãªã¢ã¹åãšã¢ãã«åã¯ãµããŒããããŠããŸããã
Pro SDK ã¯ãCAD ãã¡ã€ã«ãå«ããã£ã¬ã¯ããªããäœæããã CAD ãã¡ã€ã« ã¯ãŒã¯ã¹ããŒã¹ããµããŒãããŠããŸãã CAD ããŒã¿ã»ããã¯èªã¿åãå°çšã§ãåäžã® DXFãDWGãDGN ãã¡ã€ã«ãããŒã¹ã«ããŠããŸãã CAD ãã¡ã€ã«ã¯ã空éåç §ïŒPRJïŒã座æšå€æïŒWLDïŒã®ããã®è£å©ãã¡ã€ã«ãšé¢é£ããŠããå ŽåããããŸãã
CAD ãã¡ã€ã«ã®ã¯ãŒã¯ã¹ããŒã¹ã¯ãFileSystemDatastore ã®ã³ã³ã¹ãã©ã¯ã¿ã§éãããšãã§ããŸãããã®ã³ã³ã¹ãã©ã¯ã¿ã¯ãã³ã³ã¹ãã©ã¯ã¿ã§ FileSystemDatastoreType.Cad ãæå®ããã FileSystemConnectionPath ãåãåããŸãã
FileSystemConnectionPath connectionPath = new FileSystemConnectionPath(new Uri("path\\to\\CAD \\directory"), FileSystemDatastoreType.Cad);
FileSystemDatastore cadDatastore = new FileSystemDatastore(connectionPath);
OpenDataset<T> ãšãããžã§ããªãã¯ãªã¡ãœããã䜿ãããšã§ãç¹å®ã® CAD ãã¡ã€ã«ã CadDataset
ãšããŠéãããšãã§ããŸããT 㯠CadDataset ã§ãªããã°ãªããŸããããã T ãä»ã®ã¿ã€ãã§ãããšãInvalidOperationException ãã¹ããŒãããŸãã
CAD ããŒã¿ã»ããã¯ãããã©ã«ãã§ã¯ããžãªã¡ããªçãªã¿ã€ãã«åºã¥ããŠãPOINTSãPOLYLINESãPOLYGONãMULTIPATCHãANNOTATION ã®åãã£ãŒã㣠ã¯ã©ã¹ã«è§£éãããŸãã ãã£ãŒãã£ã®å±æ§ã¯ãéžæããã CAD ãšã³ãã£ãã£ã®ããããã£ãããä»®æ³ããŒãã«ãšããŠã¡ã¢ãªã«çµã¿ç«ãŠãããŸãã ãœãŒã¹ãžãªã¡ããªã¯ãè€æ°ã®ããã©ã«ã ãã£ãŒã㣠ã¯ã©ã¹ã«å«ãŸããå ŽåããããŸããäŸãã°ãPOLYGONS ãã£ãŒã㣠ã¯ã©ã¹ã«å«ãŸããå šãŠã®ãã£ãŒãã£ã¯ãPOLYLINES ãã£ãŒã㣠ã¯ã©ã¹ã«ãè¡šçŸãããŸãã AutoCAD ãã¡ã€ã«ã®å ŽåãDWG ãã¡ã€ã«ã«ã¯ãArcGIS for AutoCAD ã§äœæãããããŸã㯠ArcGIS Desktop ãããšã¯ã¹ããŒããããããŒã¿ããäœæãããæ瀺ç㪠ArcGIS ãã£ãŒã㣠ã¯ã©ã¹ãå«ãŸããŠããå ŽåããããŸãããã®å Žåããã£ãŒãã£å±æ§ã¯ããªãªãžãã«ã® GIS ãã£ãŒãã£å±æ§ããŒã¿ããŸã㯠ArcGIS for AutoCAD ããè¿œå ããã GIS ããŒã¿ãããšã³ã³ãŒããããŸãã
å©çšå¯èœãªãã£ãŒã㣠ã¯ã©ã¹ã®ãªã¹ããå«ã CAD ããŒã¿ã»ããã«é¢ããã¡ã¿ããŒã¿ã¯ãGetDefinition ãåŒã³åºãããšã§ååŸã§ããCadDatasetDefinition
ãªããžã§ã¯ããè¿ãããŸããCAD ãã¡ã€ã«å
ã®åã
ã®ãã£ãŒãã£ãŒã¯ã©ã¹ã¯ãCadDataset
ã® OpenDataset
ã¡ãœããã§éãããšãã§ããŸãã
Dataset æœè±¡ã¯ã©ã¹ã¯ãArcGIS Pro ã§æå³ã®ããäžè²«ããããŒã¿ã®éåäœã§ãããšã³ãã£ãã£ãè¡šããŸããããšãã°ãArcGIS.Core.Data.Table ã¯ããŒã¿ã»ãããç¶æ¿ããæå®ãããã¹ããŒãã«æºæ ããããŒã¿ã®ã³ã¬ã¯ã·ã§ã³ãè¡šããŸãïŒããšãã°ãåè¡ã«ã¯åããã£ãŒã«ãããããŸãïŒã
ããŒã¿ã»ãã ãšã³ãã£ãã£ãè¡šããããŒã¿ã»ããããç¶æ¿ããã¯ã©ã¹ã以äžã«èª¬æããŸãã
Tables ã¯ã1ã€ä»¥äžã®åïŒãŸãã¯ãã£ãŒã«ãïŒãæã€0å以äžã®è¡ãå«ãããŒã¿ã»ããã®ã¿ã€ãã§ããããŒãã«å ã®ãã¹ãŠã®è¡ã«ã¯ãåãåããããååã«1ã€ã®å€ïŒãŸãã¯å€ãªãïŒãé¢é£ä»ããããŠããŸãã
ãžãªããŒã¿ããŒã¹ã§ã¯ãå±æ§ã¯ã次ã®åçŽã§ãããªããäžå¯æ¬ ãªãªã¬ãŒã·ã§ãã«ããŒã¿ã®æŠå¿µã«åºã¥ããŠããŒãã«ã§ç®¡çãããŸãã
- ããŒãã«ã«ã¯è¡ãå«ãŸããŠããŸãã
- ããŒãã«ã®ãã¹ãŠã®è¡ã«ã¯åãåããããŸãã
- ååã«ã¯ãæŽæ°ã10é²æ°ãæåãæ¥ä»ãªã©ã®ããŒã¿åããããŸãã
- äžé£ã®ãªã¬ãŒã·ã§ãã«é¢æ°ãšæŒç®åïŒSQLãªã©ïŒã䜿çšããŠãããŒãã«ãšãã®ããŒã¿èŠçŽ ãæäœã§ããŸãã
ArcGIS.Core.Data API ã§ã¯ã Table ãªããžã§ã¯ãã¯æ¬¡ã®æ¹æ³ã§ååŸã§ããŸãã
- Geodatabase ãªããžã§ã¯ãããïŒ
Table table = geodatabase.OpenDataset<Table>("TableName");
FeatureService ãè¡šã Geodatabase ãªããžã§ã¯ãã®å ŽåãOpenDataset ã¯ãããŒãã«ã® ID ã®æååè¡šçŸã䜿çšããŠåŒã³åºãããšãã§ããŸãã
Table table = geodatabase.OpenDataset<Table>("2");
- FeatureLayer ãªããžã§ã¯ãããïŒ
ArcGIS.Desktop.Mapping.Layer selectedLayer = MapView.Active.GetSelectedLayers()[0];
if (selectedLayer is ArcGIS.Desktop.Mapping.FeatureLayer)
{
ArcGIS.Core.Data.Table table = (selectedLayer as FeatureLayer).GetTable();
}
- Row ãªããžã§ã¯ãããïŒ
ArcGIS.Desktop.Editing.Events.RowChangedEvent.Subscribe(args =>
{
ArcGIS.Core.Data.Row row = args.Row;
ArcGIS.Core.Data.Table table = row.GetTable();
}
ãã£ãŒãã£ã¯ã©ã¹ ã¯ãå ±éã®ãã£ãŒãã£ã®åçš®ã®ã³ã¬ã¯ã·ã§ã³ã§ããããããããåã空éè¡šçŸïŒãã€ã³ããã©ã€ã³ãããªãŽã³ãªã©ïŒãšãå ±éã®å±æ§åã®ã»ããïŒããšãã°ãéè·¯ã®äžå¿ç·ãè¡šãã©ã€ã³ãã£ãŒãã£ã¯ã©ã¹ïŒãæã¡ãŸããArcGIS Pro ã§ã¯ããžãªããŒã¿ããŒã¹ã§äžè¬çã«äœ¿çšãããŠããçŸåšãµããŒããããŠãããã£ãŒãã£ã¯ã©ã¹ã¯ããã€ã³ããã©ã€ã³ãããã³ããªãŽã³ã§ãã
次ã®ç»åã§ã¯ããã€ã³ããã©ã€ã³ãããã³ããªãŽã³ã䜿çšããŠãåããšãªã¢ã®3ã€ã®ããŒã¿ã»ãããè¡šããŸãããã€ã³ããšããŠã®å ¬åããã³ã¬ã¯ãªãšãŒã·ã§ã³ãšãªã¢ã®å Žæãã©ã€ã³ãšããŠã®éè·¯ãããã³ããªãŽã³ãšããŠã®æœèšã§ãã
ArcGIS.Core.Data API ã§ã¯ãFeatureClass ã¯ã©ã¹ã¯ Table ã¯ã©ã¹ããç¶æ¿ããŸããFeatureClass ãªããžã§ã¯ãã®ååŸã¯ã次ã®äŸã«ç€ºãããã«Table ãªããžã§ã¯ãã®ååŸã«äŒŒãŠããŸãã
- Geodatabase ãªããžã§ã¯ãããïŒ
FeatureClass table = geodatabase.OpenDataset<FeatureClass>("FeatureClassName");
FeatureService ãè¡šããžãªããŒã¿ããŒã¹ãªããžã§ã¯ãã®å ŽåãOpenDataset ã¯ããã£ãŒãã£ã¯ã©ã¹ã® ID ã®æååè¡šçŸã䜿çšããŠåŒã³åºãããšãã§ããŸãã
FeatureClass featureClass = geodatabase.OpenDataset<FeatureClass>("2");
- FeatureLayer ãªããžã§ã¯ãããïŒ
ArcGIS.Desktop.Mapping.Layer selectedLayer = MapView.Active.GetSelectedLayers()[0];
if (selectedLayer is ArcGIS.Desktop.Mapping.FeatureLayer)
{
Table table = (selectedLayer as FeatureLayer).GetTable();
if(table is FeatureClass)
{
FeatureClass featureClass = table as FeatureClass;
}
}
- Feature ãªããžã§ã¯ãããïŒ
ArcGIS.Desktop.Editing.Events.RowChangedEvent.Subscribe(args =>
{
Row row = args.Row;
if(row is Feature)
{
FeatureClass featureClass = row.GetTable() as FeatureClass;
}
}
次ã®ã³ãŒãã䜿çšããŠãFeatureClass ãªããžã§ã¯ããéãããšãã§ããŸãã
Table table = geodatabase.OpenDataset<Table>("FeatureClassName");
ããŒãã«ã¯ ArcGIS.Core.Data.Table åç §ã§ãããå®éã«ã¯ãArcGIS.Core.Data.FeatureClass ãªããžã§ã¯ãã§ããããŒãã«åç §ã FeatureClass ãšããŠãã£ã¹ããããšããã£ã¹ãã¯æåŸ ã©ããã«æ©èœããŸãã
ãã£ãŒãã£ããŒã¿ã»ããã¯ãå ±éã®åº§æšç³»ãå ±æããé¢é£ãããã£ãŒãã£ã¯ã©ã¹ã®ã³ã¬ã¯ã·ã§ã³ã§ãããã£ãŒãã£ããŒã¿ã»ããã¯ç©ºéçã«äœ¿çšãããŸãããããã®äž»ãªç®çã¯ãããããžããããã¯ãŒã¯ããŒã¿ã»ããããŸãã¯ãã¬ã€ã³ããŒã¿ã»ãããæ§ç¯ããããã®å ±éã®ããŒã¿ã»ããã«é¢é£ãããã£ãŒãã£ã¯ã©ã¹ãç·šæããããšã§ããããŒã¿ãä¿åããã®ã§ã¯ãªããä»ã®ããŒã¿ã»ããã®ã³ã³ãããšããŠæ©èœããå«ãŸããŠããããŒã¿ã»ãããšå ±éã®ç©ºéåç §ã®ç¯å²ãç¶æããŸãã
ArcGIS.Core.Data.FeatureDataset ãªããžã§ã¯ã㯠Geodatabase ãªããžã§ã¯ãããã®ã¿ååŸã§ããŸãã
FeatureDataset FeatureDataset = geodatabase.OpenDataset<FeatureDataset>("FeatureDatasetName");
GIS ã¯ãããŸããŸãªã¿ã€ãã®å°ççããã³éå°ççãšã³ãã£ãã£ã«é¢ããæ å ±ãçµ±åããŸãããããã®ãšã³ãã£ãã£ã®å€ãã¯é¢é£ããŠããå¯èœæ§ããããŸãã
- å°ççãšã³ãã£ãã£ã¯ãä»ã®å°ççãšã³ãã£ãã£ã«é¢é£ä»ããããšãã§ããŸããããšãã°ã建ç©ãåºç»ã«é¢é£ä»ããããšãã§ããŸãã
- å°ççãšã³ãã£ãã£ã¯ãéå°ççãšã³ãã£ãã£ã«é¢é£ä»ããããšãã§ããŸããããšãã°ãåå°ã®åºç»ãææè ã«é¢é£ä»ããããšãã§ããŸãã
- éå°ççãšã³ãã£ãã£ã¯ãä»ã®éå°ççãšã³ãã£ãã£ã«é¢é£ä»ããããšãã§ããŸããããšãã°ãåºç»ã®ææè ã«çšã³ãŒããå²ãåœãŠãããšãã§ããŸãã
ãžãªããŒã¿ããŒã¹ã®ãªã¬ãŒã·ã§ã³ã·ããã¯ã©ã¹ã¯ãããããŒã¿ã»ããã®ãªããžã§ã¯ãïŒãã£ãŒãã£ã¯ã©ã¹ãŸãã¯ããŒãã«ïŒãšå¥ã®ããŒã¿ã»ããã®ãªããžã§ã¯ãéã®é¢é£ä»ãã管çããŸãããªã¬ãŒã·ã§ã³ã·ããã®äž¡ç«¯ã«ãããªããžã§ã¯ãã¯ãããŒãã«å ã®ãžãªã¡ããªãŸãã¯ã¬ã³ãŒããæã€ãã£ãŒãã£ã«ããããšãã§ããŸãã
ãªã¬ãŒã·ã§ã³ã·ããã¯ã©ã¹ã¯ãåç §æŽåæ§ãæ€èšŒããå Žåã«ãã£ãŠã¯ä¿èšŒããã®ã«åœ¹ç«ã¡ãŸããããšãã°ã1ã€ã®ãã£ãŒãã£ãåé€ãŸãã¯å€æŽãããšãé¢é£ãããã£ãŒãã£ãåé€ãŸãã¯å€æŽãããå¯èœæ§ããããŸããããã«ããªã¬ãŒã·ã§ã³ã·ããã¯ã©ã¹ã¯ãžãªããŒã¿ããŒã¹ã«æ ŒçŽãããŠããããããžãªããŒã¿ããŒã¹ã䜿çšãããã¹ãŠã®ãŠãŒã¶ãŒãã¢ã¯ã»ã¹ã§ããŸãããªã¬ãŒã·ã§ã³ã·ããã¯ã©ã¹ã¯ã次ã®ã«ãŒãã£ããªãã£ããµããŒãããŸãã
- 1察1
- 1察å€
- å€å¯Ÿå€
泚ïŒå€å¯Ÿå€ã®ãªã¬ãŒã·ã§ã³ã·ããã¯ã©ã¹ã¯ãå±æ§ä»ãã®ãªã¬ãŒã·ã§ã³ã·ããã¯ã©ã¹ãšèŠãªãããŸãããããã¯åŒãç¶ããªã¬ãŒã·ã§ã³ã·ããã¯ã©ã¹ãšããŠéãããšãã§ããŸãããå±æ§ä»ãã®ãªã¬ãŒã·ã§ã³ã·ããã¯ã©ã¹ ãšããŠéãããšãã§ããŸãã
ArcGIS.Core.Data.RelationshipClass ãªããžã§ã¯ãã¯ãGeodatabase ãªããžã§ã¯ãããååŸã§ããŸãããªã¬ãŒã·ã§ã³ã·ããã¯ã©ã¹ã®ååãããã£ãŠããå Žåã¯ãGeodatabase.OpenDataset<RelationshipClass>
ã¡ãœããã䜿çšããŠéãããšãã§ããŸãã
RelationshipClass relationshipClass = geodatabase.OpenDataset<RelationshipClass>("RelClassName");
ãŸãã¯ãOpenRelationshipClasses ã¡ãœããã䜿çšããŠã2ã€ã®ããŒãã«ãŸãã¯ãã£ãŒãã£ã¯ã©ã¹éã®ãã¹ãŠã®ãªã¬ãŒã·ã§ã³ã·ããã¯ã©ã¹ããã§ããããããšãã§ããŸããæåã®ãã©ã¡ãŒã¿ãŒã¯é¢é£å
ããŒãã«åãŸãã¯ãªããžã§ã¯ãã§ããã2çªç®ã®ãã©ã¡ãŒã¿ãŒã¯é¢é£å
ããŒãã«åãŸãã¯ãªããžã§ã¯ãã§ããæå®ãããããŒãã«éã«è€æ°ã®é¢ä¿ãååšããå¯èœæ§ããããããæ»ãå€ã¯RelationshipClass
ãªããžã§ã¯ãã® IReadOnlyList ã§ãããã©ã¡ãŒã¿ã®é åºã«ãã£ãŠãè¿ããããªã¬ãŒã·ã§ã³ã·ããã¯ã©ã¹ãç°ãªãããšã«æ³šæããŠãã ããã
IReadOnlyList<RelationshipClass> relationshipClasses = geodatabase.OpenRelationshipClasses("SourceTableName", "DestinationTableName");
IReadOnlyList<RelationshipClass> relationshipClassesAlternate= geodatabase.OpenRelationshipClasses(sourceTableObject, destinationTableObject);
ãã£ãŒãã£ãµãŒãã¹ ãžãªããŒã¿ããŒã¹ã䜿çšããå ŽåãããŒãã«åã¯ãã¬ã€ã€ ID æååããŸãã¯ãã£ãŒãã£ãµãŒãã¹ãä»ããŠå ¬éããããã£ãŒãã£ã¯ã©ã¹ã®ååã§ããå¿ èŠããããŸãã
IReadOnlyList<RelationshipClass> srcToDestRelClasses = geodatabase.OpenRelationshipClasses("0", "2"));
IReadOnlyList<RelationshipClass> srcToDestRelClassesAlternate = geodatabase.OpenRelationshipClasses("L3States", "L2Counties");
ãªã¬ãŒã·ã§ã³ã·ããã¯ã©ã¹ã®æäœã®è©³çŽ°ã«ã€ããŠã¯ã Working with relationship classes ãåç §ããŠãã ããã
ã·ã³ãã«ãŸãã¯ã³ã³ããžããã§ãç¹å®ã®ã«ãŒãã£ããªãã£ã®ãªã¬ãŒã·ã§ã³ã·ããã¯ã©ã¹ã¯ãå±æ§ãæã€ããšãã§ããŸããå±æ§ãæã€ãªã¬ãŒã·ã§ã³ã·ããã¯ã©ã¹ã¯ãããŒã¿ããŒã¹ã®ããŒãã«ã«æ ŒçŽãããŸãããã®ããŒãã«ã«ã¯ãå°ãªããšãé¢é£å ãã£ãŒãã£ã¯ã©ã¹ãŸãã¯ããŒãã«ãžã®å€éšããŒãšãé¢é£å ãã£ãŒãã£ã¯ã©ã¹ãŸãã¯ããŒãã«ãžã®å€éšããŒãå«ãŸããŠããŸãã
å±æ§ä»ãã®ãªã¬ãŒã·ã§ã³ã·ããã«ã¯ãä»ã®å±æ§ãå«ããããšãã§ããŸããããšãã°ã絊氎管ãæ ŒçŽãããã£ãŒãã£ã¯ã©ã¹ãšæ¶ç«æ ãæ ŒçŽãããã£ãŒãã£ã¯ã©ã¹ãé¢é£ä»ããå±æ§ä»ããªã¬ãŒã·ã§ã³ã·ããã¯ã©ã¹ãæ€èšããå Žåã絊氎管ãªããžã§ã¯ãã«ã¯ç¬èªã®å±æ§ããããæ¶ç«æ ãªããžã§ã¯ãã«ã¯ç¬èªã®å±æ§ããããŸãããªã¬ãŒã·ã§ã³ã·ããã¯ã©ã¹ã¯ãã©ã®çµŠæ°Žç®¡ãã©ã®æ¶ç«æ ã«çµŠæ°Žãããã瀺ããŸãã2ã€ãæ¥ç¶ããã©ã€ã¶ãŒã®ã¿ã€ããªã©ããã®ãªã¬ãŒã·ã§ã³ã·ããã«é¢ããããçš®ã®æ å ±ãæ ŒçŽããå¿ èŠãããããããã®æ å ±ãå±æ§ãšããŠãªã¬ãŒã·ã§ã³ã·ããã¯ã©ã¹ã«æ ŒçŽã§ããŸãã
ArcGIS.Core.Data API ã§ã¯ã AttributedRelationshipClass ã¯ã©ã¹ã¯RelationshipClass ããç¶æ¿ããŸããäžéããŒãã«ãæã€ãã¹ãŠã®RelationshipClasses ã¯ããŠãŒã¶ãŒå®çŸ©ã®å±æ§ãååšãããã©ããã«é¢ä¿ãªããå±æ§ä»ãã®ãªã¬ãŒã·ã§ã³ã·ããã¯ã©ã¹ãšããŠæ±ãããŸãã
ArcGIS.Core.Data.AttributedRelationshipClass ãªããžã§ã¯ãã¯ã Geodatabase ãªããžã§ã¯ãããååŸã§ããŸããå±æ§ä»ãã®ãªã¬ãŒã·ã§ã³ã·ããã¯ã©ã¹ã®ååãããã£ãŠããå Žåã¯ãGeodatabase.OpenDataset <AttributedRelationshipClass>
ã¡ãœããã䜿çšããŠéãããšãã§ããŸãã
-->
AttributedRelationshipClass attrRelationshipClass = geodatabase.OpenDataset<AttributedRelationshipClass>("AttrRelClassName");
ãŸãã¯ãOpenRelationshipClasses ã¡ãœããã䜿çšããŠã2ã€ã®ããŒãã«ãŸãã¯ãã£ãŒãã£ã¯ã©ã¹éã®ãã¹ãŠã®ãªã¬ãŒã·ã§ã³ã·ããã¯ã©ã¹ããã§ããããããšãã§ããŸããæåã®ãã©ã¡ãŒã¿ãŒã¯é¢é£å ããŒãã«åãŸãã¯ãªããžã§ã¯ãã§ããã2çªç®ã®ãã©ã¡ãŒã¿ãŒã¯é¢é£å ããŒãã«åãŸãã¯ãªããžã§ã¯ãã§ããæå®ãããããŒãã«éã«è€æ°ã®é¢ä¿ãååšããå¯èœæ§ããããããæ»ãå€ã¯Relationship ã¯ã©ã¹ãªããžã§ã¯ãã® IReadOnlyList ã§ãããã©ã¡ãŒã¿ã®é åºã«ãã£ãŠãè¿ããããªã¬ãŒã·ã§ã³ã·ããã¯ã©ã¹ãç°ãªãããšã«æ³šæããŠãã ããã
IReadOnlyList<RelationshipClass> relationshipClasses = geodatabase.OpenRelationshipClasses("SourceTableName", "DestinationTableName");
IReadOnlyList<RelationshipClass> relationshipClassesAlternate= geodatabase.OpenRelationshipClasses(sourceTableObject, destinationTableObject);
ãã£ãŒãã£ãµãŒãã¹ ãžãªããŒã¿ããŒã¹ã䜿çšããå ŽåãããŒãã«åã¯ãã¬ã€ã€ ID æååããŸãã¯ãã£ãŒãã£ãµãŒãã¹ãä»ããŠå ¬éããããã£ãŒãã£ã¯ã©ã¹ã®ååã§ããå¿ èŠããããŸãã
IReadOnlyList<RelationshipClass> srcToDestRelClasses = geodatabase.OpenRelationshipClasses("0", "2"));
IReadOnlyList<RelationshipClass> srcToDestRelClassesAlternate = geodatabase.OpenRelationshipClasses("L3States", "L2Counties");
ãªã¬ãŒã·ã§ã³ã·ããã¯ã©ã¹ã®æäœã®è©³çŽ°ã«ã€ããŠã¯ããªã¬ãŒã·ã§ã³ã·ããã¯ã©ã¹ã®æäœ ãåç §ããŠãã ããã
ãªã¢ã«ã¿ã€ã ããŒã¿ã»ãããšãã£ãŒãã£ã¯ã©ã¹ã¯ãProConcepts Stream Layers ã§ã«ããŒãããŠããŸã
Definition ã¯ãããŒã¿ã»ããã«é¢ããã¡ã¿ããŒã¿ãè¡šãæŠå¿µã§ããããŒã¿ã»ããã¯ãã«ãã»ã«åããããŒã¿ã«ã¢ã¯ã»ã¹ããæ¹æ³ãæäŸããŸãããDefinition ã«ã¯ãããŒã¿ã»ããã®ã¹ããŒããããã«é¢é£ä»ããããäžæã®ããããã£ãªã©ãèšè¿°ãããŸãã
泚ïŒå®çŸ©ã¯ãArcObjects API ã® DataElement ãšæŠå¿µçã«åçã®æœè±¡åã§ãã
ArcGIS.Core.Data.Dataset æœè±¡ã¯ã©ã¹ããç¶æ¿ãããã¹ãŠã®ã¯ã©ã¹ã«ã¯ããã®ããŒã¿ã»ããããæåŸ ãããåºæã®åäœã§ããã¡ãœãããããããšã«æ³šæããŠãã ããããã ãããã¹ãŠã®ã¡ã¿ããŒã¿ã«ã¯ãDefinition æœè±¡ã¯ã©ã¹ãä»ããŠã¢ã¯ã»ã¹ããå¿ èŠããããŸãã
ã¡ã¿ããŒã¿ã Definition ã«åé¢ããçç±ã®1ã€ã¯ãããŒã¿ã»ãããéãå Žåãšæ¯èŒããŠãDefinition ãéãããšã軜éãªæäœã§ããããã§ããããšãã°ãPolyline FeatureClass ã«é¢ããæ å ±ã®ã¿ãå¿ èŠãªå Žåã¯ããã¹ãŠã®FeatureClass ãéããŠåãããšãè¡ãããããDefinition ã®ååŸãšãã£ã«ã¿ãªã³ã°ã®æ¹ãå¹ççã§ãã
Definition æœè±¡ã¯ã©ã¹ããç¶æ¿ããã¯ã©ã¹ã¯æ¬¡ã®ãšããã§ãã
- TableDefinition - ArcGIS.Core.Data.Table ããŒã¿ã»ããã®ã¡ã¿ããŒã¿ãTableDefinition ããã¢ã¯ã»ã¹ã§ããäž»èŠãªãªããžã§ã¯ãã«ã¯ããã£ãŒã«ãããµãã¿ã€ããã€ã³ããã¯ã¹ãObjectIDFieldãSubtypeFieldãGlobalIDField ãªã©ã®ååããããŸãã
- FeatureClassDefinition - TableDefinition ããç¶æ¿ããFeatureClass ã«åºæã®ã¡ã¿ããŒã¿ãç¹ã« ShapeFieldãShapeTypeãSpatialReferenceãAreaãLength ãªã©ã«ã¢ã¯ã»ã¹ããããã®ã¡ãœãããžã®è¿œå ã¢ã¯ã»ã¹ããããŸãã
- FeatureDatasetDefinition â FeatureDataset ã®SpatialReference ããã³Extent ãžã®ã¢ã¯ã»ã¹ãæäŸããã¡ã¿ããŒã¿ã
- RelationshipClassDefinition - ArcGIS.Core.Data.RelationshipClass ã® ã¡ã¿ããŒã¿ã§ãã«ãŒãã£ããªãã£ãé¢é£å ãšé¢é£å ã®ããŒã¿ã»ãããé¢é£å ã®å€éšããŒãã£ãŒã«ãããããã³ã³ããžãããã©ãããããŒã¿ã»ãããšãã®ã¢ã¿ããã¡ã³ã ããŒãã«ãé¢é£ä»ãã RelationshipClass ãè¡šããŠãããã©ãããªã©ã®æ å ±ã«ã¢ã¯ã»ã¹ã§ããŸãã
- AttributedRelationshipClassDefinition - RelationshipClassDefinition ããç¶æ¿ããé¢é£å ã®å€éšããŒãã£ãŒã«ããå±æ§ååãè¡šããã£ãŒã«ããªã©ãžã®è¿œå ã¢ã¯ã»ã¹ãæäŸããŸãã
- UnknownDefinition - API ã§ãŸã ãµããŒããããŠããªãããŒã¿ã»ããã® Definition ã«ã¢ã¯ã»ã¹ããããšããŠããããšãè¡šããŸããããã«ã¯ããžãªã¡ããªãã¯ãããã¯ãŒã¯ãããŒã»ã«ãã¡ããªãã¯ãããã³ããããžãå«ãŸããŸãã
Definitions ã«ã¢ã¯ã»ã¹ããããã®2ã€ã®ãªãã·ã§ã³ã¯æ¬¡ã®ãšããã§ãã
- Geodatabase ãã Definition ãéã - äžè¬çã«ã¯ãããŒã¿ã»ãããéãããããšãäºæ³ãããªãå Žåã«äœ¿çšãããŸãã
FeatureDatasetDefinition definition = geodatabase.GetDefinition<FeatureDatasetDefinition>("FeatureDatasetName");
- ããŒã¿ã»ãããã Definition ãéã - ããã¯ãããŒã¿ã»ããããã§ã«éãããŠãããåç §ã«ã¢ã¯ã»ã¹ã§ããå Žåã«äœ¿çšãããŸãã
ArcGIS.Desktop.Mapping.Layer selectedLayer = MapView.Active.GetSelectedLayers()[0];
if (selectedLayer is ArcGIS.Desktop.Mapping.FeatureLayer)
{
using (Table table = (selectedLayer as FeatureLayer).GetTable())
{
TableDefinition definition = table.GetDefinition();
}
}
ããŒãã«ããã£ãŒãã£ã¯ã©ã¹ãããã³å±æ§ä»ãã®ãªã¬ãŒã·ã§ã³ã·ããã¯ã©ã¹ã¯ãåãšå矩ã®ãã£ãŒã«ãã§æ§æãããŸãããã£ãŒã«ãã¯ã察å¿ããããŒã¿ã»ããã®ã¹ããŒããè¡šããŸãã
ArcGIS.Core.Data ã§ã¯ããã£ãŒã«ãã¯åžžã«ã以äžã®ãªããžã§ã¯ãã® GetFields() ãåŒã³åºãããšã§ã¢ã¯ã»ã¹å¯èœãª ArcGIS.Core.Data.Field ãªããžã§ã¯ãã®èªã¿åãå°çšã®ãªã¹ããšããŠè¿ãããŸãã
- TableDefinition
- FeatureClassDefinition
- AttributedRelationshipClassDefinition
- RowCursor
- RowBuffer
- Row
- Feature
- AttributedRelationship
åãããŒã¿ã»ããã®å Žåã次ã®ãªããžã§ã¯ãã®ã»ããããåæã«ååŸããããã£ãŒã«ãã®ã³ã¬ã¯ã·ã§ã³ã¯åçã§ããå¿ èŠããããŸãã
- TableDefinitionãRowCursorãRowBufferãRow
- FeatureClassDefinitionãRowCursorãRowBufferãFeature
- AttributedRelationshipClassDefinitionãAttributedRelationship
èªã¿åãå°çšã³ã¬ã¯ã·ã§ã³ãååŸããåŸãLINQ ã䜿çšããŠã以äžã«ç€ºãããã«ãªã¹ãããã£ã«ã¿ãŒåŠçã§ããŸãã
using (Geodatabase geodatabase = new Geodatabase(new FileGeodatabaseConnectionPath(new Uri("path\\to\\gdb"))))
using (FeatureClass enterpriseFeatureClass = geodatabase.OpenDataset<FeatureClass>("LocalGovernment.GDB.FacilitySite"))
{
FeatureClassDefinition facilitySiteDefinition = enterpriseFeatureClass.GetDefinition();
IReadOnlyList<Field> fields = facilitySiteDefinition.GetFields();
IEnumerable<Field> dateFields = fields.Where(field => field.FieldType == FieldType.Date);
}
3.2ããã64ããã ãã£ãŒã«ãåã®ãµããŒããè¿œå ãããŸããïŒ64 ãããã® ObjectID (OID) ãš BigInteger ã§ãã64ãããã® OID
ãš BigInteger
(64ãããã®æŽæ°) ãã£ãŒã«ãã«ãããéçºè
ã¯ãã倧ããªæŽæ°å€ãè¡šçŸããããšãã§ããŸãã
ãã®èŠæ Œã§ã¯ã笊å·ã«1ããããææ°ã«11ããããä»®æ°ã«52ããããå²ãåœãŠãããŠããŸãããããã£ãŠããžãªããŒã¿ããŒã¹ã®64ããã ããŒã¿ ãã£ãŒã«ãã«æžã蟌ããæŽæ°ã®æ倧å€ã¯
9007199254740991
ãŸãã¯(2^53)-1
ã§ããã18446744073709552000
ãŸãã¯(2^64)
ãŸã§ã®å€ãèªã¿èŸŒãããšãã§ããŸãã
// Creating a 64-bit Object ID
FieldDescription oidFieldDescription_64 = new FieldDescription("ObjectID", FieldType.OID)
{
Length = 8
};
// Creating a 64-bit integer
FieldDescription bigIntegerFieldDescription = new FieldDescription("BigInt", FieldType.BigInteger);
32ãããã® ObjectID ã®é·ãã¯4ãã€ãã64ãããã® ObjectID ã®é·ãã¯8ãã€ãã§ãã
Pro SDKã¯ãç¹å®ã®æ¥ä»ãæå»ãè¡šã DateOnly
ãã£ãŒã«ããš TimeOnly
ãã£ãŒã«ãããµããŒãããŠããŸãã
DateOnly
ãã£ãŒã«ãã¯æå»ãå«ãŸãªãç¹å®ã®æ¥ä»ãè¡šããŸãããã®ãã£ãŒã«ãã¯ç幎ææ¥ãªã©ãæå»ã«é¢ä¿ããªãç¹å®ã®æ¥ä»ãä¿åããã®ã«é©ããŠããŸãã
TimeOnly
ãã£ãŒã«ãã¯æ¥ä»ã®ãªãæå»ãè¡šããŸãããã®ãã£ãŒã«ãã¯æ¯æ¥çºçãããããªãæ¥ä»ãä¿åããããšãäžé©åãªã€ãã³ãã®ä¿åã«æé©ã§ãã
//Creating fields
// 9/28/2014 (DateOnly)
FieldDescription earthquakeDateOnlyFieldDescription = new FieldDescription("Earthquake_DateOnly", FieldType.DateOnly);
// 1:16:42 AM (TimeOnly)
FieldDescription earthquakeTimeOnlyFieldDescription = new FieldDescription("Earthquake_TimeOnly", FieldType.TimeOnly);
// Creating a row buffer
rowBuffer["Earthquake_DateOnly"] = new DateOnly(2014, 9, 28);
rowBuffer["Earthquake_TimeOnly"] = new TimeOnly(1, 16, 42);
泚: Oracle Enterprise Geodatabase ã¯ã
DateOnly
ãã£ãŒã«ããšTimeOnly
ãã£ãŒã«ãããµããŒãããŠããŸããã
TimeStampOffset ãã£ãŒã«ãã¯ãåå®äžçæïŒUTCïŒã®æ¥ä»ãšæå»ã®å€ãè¡šãããªãã»ããå€ã¯çŸå°æéãš UTC ã®å·®ã瀺ããŸãã
// Creating a time stamp offset field
// 9/28/2014 1:16:42.000 AM -09:00
FieldDescription earthquakeTimestampOffsetFieldDescription = new FieldDescription("Earthquake_TimestampOffset_Local", FieldType.TimestampOffset);
// creating a row buffer
rowBuffer["Earthquake_TimestampOffset_Local"] = new DateTimeOffset(2014, 9, 28, 1, 16, 42, 0, TimeSpan.FromHours(-9));
æ¥ä»ãšæå»ã®ããŒã¿åã³ã³ããŒãã³ãã®å³ã
泚: Postgres Enterprise Geodatabase ã¯
TimestampOffset
ãã£ãŒã«ãããµããŒãããŠããŸããã
å®å šãªãªã¹ããšè¿œå ã®è©³çŽ°ã«ã€ããŠã¯ãArcGIS ããŒã¿ ã¿ã€ã ããåç §ãã ãããPro SDK ã䜿çšããŠãã£ãŒã«ãã«é©çšã§ããåããŒã¿åã«ã€ããŠèª¬æããŠããŸãã
ãã£ãŒã«ãã®ç²ŸåºŠããããã£ã¯ãæ°å€ã®æ倧æ¡æ°ãè¡šããŸããã¹ã±ãŒã«ã¯ãæ°å€ã®å°æ°ç¹ä»¥äžã®æ¡æ°ãè¡šããŸããäŸãã°ã4703338.13 ãšããæ°å€ã®ã¹ã±ãŒã«ã¯ 2 ã§ã粟床㯠9 ã§ãã
FieldDescription fieldDescription = new FieldDescription("LandArea", FieldType.Double)
{
Precision = 9,
Scale = 2
};
ãã¡ã€ã«ããã³ã¢ãã€ã« ãžãªããŒã¿ããŒã¹ã¯ç²ŸåºŠãã¹ã±ãŒã«ã®å€ããµããŒãããŠããŸããã粟床ãã¹ã±ãŒã«ã®å€ãæå®ããŠãç¡èŠãããŸãã
æ¥ä»ãã£ãŒã«ãã®å Žåã粟床ã¯ããªç§åäœã®å€ãèšé²ããæ©èœãæããŸããæšæºçãªæ¥ä»ãã£ãŒã«ãã§ããFieldType.Dateã®ç²ŸåºŠå€ã¯1ã§ãããããªç§åäœã®æéãèšé²ããããšãã§ããŸãã
//Precision applies to the Date field type
FieldDescription highPrecisionDate = new FieldDescription("EarthQuake_Time", FieldType.Date);
highPrecisionDate.Precision = 1;
highPrecisionDate.SetDefaultValue(new DateTime(2023,07,14,14,54,03,105));
ãžãªããŒã¿ããŒã¹ã§ã¯ãã«ãŒã«ã䜿çšããŠãããŒãã«ããã£ãŒãã£ã¯ã©ã¹ã«ããŸããŸãªçš®é¡ã®å¶çŽã課ãããšãã§ããŸããããã«ã¯ãå±æ§ã«é¢ããã«ãŒã«ãšãªã¬ãŒã·ã§ã³ã·ããã«é¢ããã«ãŒã«ããããŸããå±æ§ã«é¢ããã«ãŒã«ã¯æãäžè¬çãªãã®ã§ããã¡ã€ã³ã䜿çšããŠäœæãããŸãããã¡ã€ã³ã¯ããã£ãŒã«ãã«å²ãåœãŠãããšã®ã§ãã蚱容å€ãæå®ããããã«äœ¿çšãããŸãã
ãžãªããŒã¿ããŒã¹ã®ãã¡ã€ã³ã«ã¯ã次ã®ãããªçš®é¡ããããŸãã
- ã³ãŒãåãããå€ - æå¹ãªå€ã®ãªã¹ããæå®ãããããããæååã§è¡šçŸããŸãã
- ç¯å²ãã¡ã€ã³ - æå¹ãªå€ã®ç¯å²ãæå°å€ãšæ倧å€ã®æ°å€ã§æå®ããŸãã
ArcGIS.Core.Data API ã§ã¯ãArcGIS.Core.Data.Domain ã¯æœè±¡ã¯ã©ã¹ãšããŠã¢ãã«åããããã¡ãŒã¹ãã¯ã©ã¹ã®ãšã³ãã£ãã£ã§ããæœè±¡ã¯ã©ã¹ã§ãã Domain ãç¶æ¿ããã¯ã©ã¹ãšããŠãRangeDomain ãš CodedValueDomain ããããŸããDomainã¯ãDomain ã®NameãFieldTypeãDescription ãžã®ã¢ã¯ã»ã¹ãæäŸããŸããRangeDomain ã§ã¯ãããã« Min ãš Max ã®å€ãžã®ã¢ã¯ã»ã¹ãå¯èœã§ããCodedValueDomain ã¯ãã³ãŒããããŒãšãã <object,string> ã® C# Generic Sorted List ãšããŠè¿ãããã³ãŒããšå€ã®ãã¢ãžã®ã¢ã¯ã»ã¹ãæäŸããŸãã
ãã¡ã€ã³ã«ã¯2ã€ã®æ¹æ³ã§ã¢ã¯ã»ã¹ã§ããŸãããã¡ã€ã³ã«ã¢ã¯ã»ã¹ããã«ã¯ã Field ãªããžã§ã¯ãã® GetDomain ã¡ãœããã䜿çšããŸããããã¯ãã¡ã€ã³ã®åç §ãè¿ããã®ã§ãããŒã¹ãšãªã Domain ã®ã¿ã€ãïŒCodedValueDomain ãŸã㯠RangeDomainïŒã«å¿ããŠå®å šã«ãã£ã¹ãããå¿ èŠããããŸããGetDomain ã¡ãœããã«ã¯ããªãã·ã§ã³ã§ Subtype ãã©ã¡ãŒã¿ããããŸããããã¯ãåŒæ°ãšããŠæž¡ããã Subtype ãªããžã§ã¯ãã§è¡šããããµãã¿ã€ãã®å€ã«å¯Ÿå¿ãããã£ãŒã«ãã«å²ãåœãŠããããã¡ã€ã³ãååŸããããã«äœ¿çšã§ããŸããæå®ããããµãã¿ã€ãã«å²ãåœãŠããããã¡ã€ã³ããªãå Žåã¯ãNULL å€ãè¿ãããŸãããµãã¿ã€ããæå®ãããŠããªãå Žåã¯ããã£ãŒã«ãã®ããã©ã«ãã®ãã¡ã€ã³ãè¿ãããŸãããã£ãŒã«ãã«ãã¡ã€ã³ãå²ãåœãŠãããŠããªãå Žåã¯ãNULL å€ãè¿ãããŸãã
ãã¡ã€ã³ã«ã¢ã¯ã»ã¹ãããã 1 ã€ã®æ¹æ³ã¯ãGeodatabase ãªããžã§ã¯ãã® GetDomains ã¡ãœããã䜿çšããããšã§ãããã®ã¡ãœãããåŒã³åºããšã掟çã¿ã€ãã CodedValueDomain ããã³ RangeDomain ã§ãã Domain ã€ã³ã¹ã¿ã³ã¹ã®èªã¿åãå°çšãªã¹ããè¿ãããŸãã
using (Geodatabase geodatabase = new Geodatabase(new FileGeodatabaseConnectionPath(new Uri("path\\to\\gdb"))))
using (FeatureClass enterpriseFeatureClass = geodatabase.OpenDataset<FeatureClass>("LocalGovernment.GDB.FacilitySite"))
{
FeatureClassDefinition facilitySiteDefinition = enterpriseFeatureClass.GetDefinition();
IReadOnlyList<Field> fields = facilitySiteDefinition.GetFields();
Field doubleField = fields.First(field => field.FieldType == FieldType.Double);
Domain domain = doubleField.GetDomain();
if (domain is RangeDomain)
{
RangeDomain rangeDomain = domain as RangeDomain;
// The reason we can directly call convert to double because the domain was obtained from a double Field.
double minValue = Convert.ToDouble(rangeDomain.GetMinValue());
double maxValue = Convert.ToDouble(rangeDomain.GetMaxValue());
}
if (domain is CodedValueDomain)
{
CodedValueDomain codedValueDomain = domain as CodedValueDomain;
SortedList<object, string> codedValuePairs = codedValueDomain.GetCodedValuePairs();
IEnumerable<KeyValuePair<object, string>> filteredPairs = codedValuePairs.Where(pair => Convert.ToDouble(pair.Key) > 20.0d);
double code = Convert.ToDouble(codedValueDomain.GetCodedValue("sampleValue"));
string value = codedValueDomain.GetName(21.45d);
}
}
Subtypes ã¯ãåäžã®ããŒãã«å ã®ãªããžã§ã¯ãããåæ§ã®ã«ãŒã«ãšåäœãæã€ã°ã«ãŒãã«åå²ããæ¹æ³ã§ãããµãã¿ã€ãã¯å ±éã®ãã£ãŒã«ãã»ãããå ±æããŸãããåã°ã«ãŒãã¯ç¬èªã®å±æ§ãšãªã¬ãŒã·ã§ã³ã·ããã«ãŒã«ãããã³äœææã®ç°ãªãããã©ã«ãå€ãæã€ããšãã§ããŸãããã®äŸã¯ãäœå® ãåæ¥ãããã³å·¥æ¥çšã®ãµãã¿ã€ãã«åå²ãããããšãå€ãåå°åºç»ã§ãããµãã¿ã€ãã¯åäžã®ããŒãã«ãŸãã¯ãã£ãŒãã£ã¯ã©ã¹ã«å¯ŸããŠå®çŸ©ãããŠãããå ±æããããšã¯ã§ããŸããã
ããŒãã«ãŸãã¯ãã£ãŒãã£ã¯ã©ã¹ã®ãµãã¿ã€ãã¯ãTableDefinition ããã³ FeatureClassDefinition ãä»ããŠååŸã§ããŸããGetSubtypes ã¡ãœããã䜿çšãããšãsubtype ãªããžã§ã¯ãã®èªã¿åãå°çšãªã¹ããè¿ãããŸããå subtype ãªããžã§ã¯ãã¯ããµãã¿ã€ãã³ãŒããšãµãã¿ã€ãåãžã®ã¢ã¯ã»ã¹ãæäŸããŸãã
using (Geodatabase geodatabase = new Geodatabase(new FileGeodatabaseConnectionPath(new Uri("path\\to\\gdb"))))
using (FeatureClass enterpriseFeatureClass = geodatabase.OpenDataset<FeatureClass>("Fittings"))
{
FeatureClassDefinition featureClassDefinition = enterpriseFeatureClass.GetDefinition();
Subtype bendSubtype = featureClassDefinition.GetSubtypes().First(subtype => subtype.GetName().Equals("BEND"));
Subtype sleeveSubtype = featureClassDefinition.GetSubtypes().First(subtype => subtype.GetName().Equals("SLEEVE"));
IReadOnlyList<Field> listOfFields = featureClassDefinition.GetFields();
int typeCodeDescFieldIndex = featureClassDefinition.FindField("TYPE_CODE_DESC");
Domain domainForBend = listOfFields[typeCodeDescFieldIndex].GetDomain(bendSubtype);
string bendDomainName = domainForBend.GetName();
Domain domainForSleeve = listOfFields[typeCodeDescFieldIndex].GetDomain(sleeveSubtype);
string sleeveDomainName = domainForSleeve.GetName();
Domain domainForNoSubtype = listOfFields[typeCodeDescFieldIndex].GetDomain();
string masterDomainName = domainForNoSubtype.GetName();
}
ãã® API ã䜿çšããŠããŒã¿ãã¯ãšãªãã2ã€ã®æ¹æ³ã¯æ¬¡ã®ãšããã§ãã
- éžæ - ãªããžã§ã¯ã ID ã®ãªã¹ãå šäœããŸãã¯æ¡ä»¶ã«äžèŽãã Row / Feature ã®ãªããžã§ã¯ã ID ã®ãªã¹ãã®ããããã«ã¢ã¯ã»ã¹ããŸããéžæã¯éåžžãåºæºãæºãããªããžã§ã¯ã ID ãååŸããããã«äœ¿çšãããŸããããã«ãããããšãã°ããããäžã®ãã£ãŒãã£ã匷調衚瀺ã§ããŸããéžæã䜿çšããå©ç¹ã¯ãè¡å šäœãååŸããå Žåã«æ¯ã¹ãŠæäœã軜éã§ãããšããããšã§ããéžæã¯ãåãTable/FeatureClass ããã®è€æ°ã®ç°ãªãéžæã1ã€ã®éžæã«çµåããå Žåã«ã圹ç«ã¡ãŸãã
- æ€çŽ¢ - ãªããžã§ã¯ã ID ã ãã§ãªããTable/FeatureClass ã®ãã¹ãŠãŸãã¯ãµãã»ããã®ãã£ãŒã«ãã®å€ã«ãã¢ã¯ã»ã¹ããããã«äœ¿çšãããŸããããŒã¿ã®ç·šéãè¡ãå¿ èŠãããå Žåã«ãæ€çŽ¢ãå¿ èŠã§ãã
ã¯ãšãªãã£ã«ã¿ãŒã¯ãã¯ãšãªäžã«ããŒã¿ããŒã¹ããååŸãããã¬ã³ãŒããå¶éãïŒQueryFilter.WhereClause ããããã£ã䜿çšïŒãã¯ãšãªçµæã®ã©ã®ãã£ãŒã«ãã«ããŒã¿ãå ¥åããããæå®ãïŒQueryFilter.SubFields ããããã£ã䜿çšïŒãè¿ãããçµæãç¹å®ã®é åºã§äžŠã¹æ¿ããããã«äœ¿çšãããŸããïŒQueryFilter.PostfixClause ããããã£ã䜿çšããŠïŒé åºä»ãããå Žåã«ãã£ãŠã¯ïŒQueryFilter.PrefixClause ããããã£ã䜿çšããŠïŒäžæã®/ç°ãªãçµæã®ã¿ãååŸããŸããã¯ãšãªãã£ã«ã¿ãŒã¯ã«ãŒãœã«ãšéžæç¯å²ãäœæããããã«äœ¿çšãããGeodatabase API å šäœã§å ±éã§ãã
ArcGIS.Core.Data.QueryFilter ã¯ãã¯ãšãªãã£ã«ã¿ãŒãäœæããããã®ã¯ã©ã¹ãè¡šããŸããããã¯ãArcGIS.Core.Data API ã§ã¹ã¬ããã«äŸåããªãæ°å°ãªããªããžã§ã¯ãã®1ã€ã§ãïŒã€ãŸããMCT 以å€ã®ã¹ã¬ãã㧠QueryFilter ãäœæã§ããŸãïŒã
QueryFilter queryFilter = new QueryFilter();
string whereClause = "OWNER_NAME = 'ADA IAN'";
queryFilter.WhereClause = whereClause;
string prefixClause = "DISTINCT";
queryFilter.PrefixClause = prefixClause;
string postfixClause = "ORDER BY OWNER_NAME";
queryFilter.PostfixClause = postfixClause;
string subFields = "OBJECTID, OWNER_NAME";
queryFilter.SubFields = subFields;
ïŒprefix å¥ã postfix å¥ãªã©ã® Distinct
ããŒã¯ãŒãã®äœ¿çšã¯ããããã®ããŒã¯ãŒãããµããŒãããããŒã¿ããŒã¹ã§ã®ã¿æ©èœããããšã«æ³šæããŠãã ãããïŒ
ArcGIS.Core.Data.SpatialQueryFilter ã¯ãArcGIS.Core.Data.QueryFilter ãç¶æ¿ããçµæããã£ã«ã¿ãªã³ã°ããããã®ãã£ã«ã¿ ãžãªã¡ããªãšããã£ã«ã¿ ãžãªã¡ããªã«äœ¿çšãã空éé¢ä¿ã¿ã€ãïŒArcGIS.Core.Data.SpatialRelationship åæåã䜿çšïŒãæå®ããããã®ããããã£ãè¿œå ãããŠããŸãã
MapPoint minPoint = new MapPointBuilder(-123, 41).ToGeometry();
MapPoint maxPoint = new MapPointBuilder(-121, 43).ToGeometry();
SpatialQueryFilter spatialFilter = new SpatialQueryFilter
{
WhereClause = "OWNER_NAME = 'ADA IAN'",
FilterGeometry = new EnvelopeBuilder(minPoint, maxPoint).ToGeometry(),
SpatialRelationship = SpatialRelationship.Intersects,
};
Where å¥ã¯ãStructured Query Language (SQL) ã¹ããŒãã¡ã³ãã®ã³ã³ããŒãã³ãã§ãã¯ãšãªã®å±æ§å¶çŽãå®çŸ©ããŸããQueryFilter ãš SpatialQueryFilter ã§ã¯ãWhere å¥ãããããã£ãšããŠäœ¿çšãããŸããWhere å¥ã¯ãè«ççµååïŒAND ããã³ ORïŒã§çµã°ãã1察å€ã®åŒã§æ§æã§ããŸãã以äžã¯ãWhere æ¡ä»¶åŒã®æå¹ãªãã©ãŒãããã§ãã
ãªãã©ã³ã1 è¿°èª ãªãã©ã³ã2
ãªãã©ã³ãã¯ãããŒãã«ããã®ãã£ãŒã«ãåãæ°å€å®æ°ãæååãåçŽãªç®è¡åŒãé¢æ°åŒã³åºãããŸãã¯ãµãã¯ãšãªã§æ§æãããŸãã
è¿°èª | æå³ | äŸ |
---|---|---|
= | çãã | TYPE = 3 |
<> | çãããªã | PROVINCE <> 'NS' |
>= | ä»¥äž | POPULATION >= 10000 |
<= | ä»¥äž | AVG_TEMP <= 25 |
> | ãã倧ãã | HEIGHT > 10 |
< | ããå°ãªã | SPD_LIMIT < 65 |
[NOT] BETWEEN | æå°å€ãšæ倧å€ã®éã«ãã | DIAMETER BETWEEN 5 AND 10 |
[NOT] IN | ãªã¹ããŸãã¯ãµãã¯ãšãªã®çµæã«ååšãã | TYPE IN ('City', 'Town') |
[NOT] EXISTS | ãµãã¯ãšãªã®çµæã確èªãã | EXISTS (SELECT * FROM PARCELS WHERE TYPE='RES') |
[NOT] LIKE | æååãã¿ãŒã³ã«äžèŽãã | CITY_NAME LIKE 'Montr_al' |
IS [NOT] NULL | å€ã NULL | WEBSITE IS NULL |
以äžã¯ãLIKE è¿°èªã§äœ¿çšã§ãã2çš®é¡ã®ã¯ã€ã«ãã«ãŒãã§ãã
- 1æåã®ã¯ã€ã«ãã«ãŒãïŒã¢ã³ããŒã¹ã³ã¢ã_ïŒ
- è€æ°æåã®ã¯ã€ã«ãã«ãŒãïŒããŒã»ã³ãèšå·ã%ïŒ
åäžæåã®ã¯ã€ã«ãã«ãŒããå«ãæååã¯ãã¯ã€ã«ãã«ãŒããæ¯èŒæååã®åäžæåã«å¯Ÿå¿ããå Žåã« true ãšè©äŸ¡ãããŸãããè€æ°æåã®ã¯ã€ã«ãã«ãŒããå«ãæååã¯ãã¯ã€ã«ãã«ãŒããæ¯èŒæååã®0ããè€æ°ã®æåã«å¯Ÿå¿ããå Žåã« true ãšè©äŸ¡ãããŸãã
以äžã¯ã¹ããŒãã¡ã³ãã®äŸã§ãã
- 'Belmont' LIKE 'ïŒ mont'ïŒtrue ãšè©äŸ¡ïŒ
- 'Belmont' LIKE 'ïŒ elmontïŒ 'ïŒtrue ãšè©äŸ¡ïŒ
- 'Belmont' LIKE'Belmont _ 'ïŒfalse ãšè©äŸ¡ïŒ
- 'Belmont' LIKE'Bel_ont 'ïŒtrue ãšè©äŸ¡ïŒ
Guid ãã£ãŒã«ãããã¹ããã where å¥ãäœæãããšãã¯ãåžžã« Guid ã次ã®ããã«ãã©ãŒãããããå¿ èŠããããŸãã
'{" + guid.ToString().ToUpper() + "}'
ããŒã¿ããŒã¹ã®äžã«ã¯ãGuid ããã€ãã£ããªããŒã¿åãšããŠæ ŒçŽãã倧æåã®æååã䜿çšãããã®ããããããToUpper
ã®åŒã³åºããå¿
èŠã§ãã
QueryFilter ã¯ã©ã¹ã® ObjectIDs
ããããã£ã¯ãObjectID ã®ã»ããã«å¯Ÿå¿ããäžé£ã®è¡ãååŸããããã®ã·ã§ãŒãã«ããã§ãããªããããŒã¿ããŒã¹ã·ã¹ãã ã«ãã£ãŠã¯ãSQL ã® in
å¥ã§æå®ã§ããå€ã®æ°ãå¶éãããŠããå ŽåããããŸãããã®ããããã£ã¯ãå¿
èŠã«å¿ããŠèŠæ±ãèªåçã«è€æ°ã®èŠæ±ã«åå²ããããšã§ããã®å¶éãåé¿ããŸããObjectIDs
ããããã£ã¯ãWhere å¥ãšçµã¿åãããããšãã§ããŸãã
public RowCursor SearchingATable(Table table, IReadOnlyList<long> objectIDs)
{
QueryFilter queryFilter = new QueryFilter()
{
ObjectIDs = objectIDs
};
return table.Search(queryFilter);
}
ArcGIS.Core.Data API ã§ãSelection ãååŸããã«ã¯ãTable/FeatureClass ãŸã㯠Selection ãªããžã§ã¯ã㧠Select ã¡ãœãããåŒã³åºãå¿ èŠããããŸããSelect ã¡ãœããã¯ã次ã®2ã€ã®ãã©ã¡ãŒã¿ãŒãåããŸãã
- QueryFilter - Table/FeatureClass çšã® ArcGIS.Core.Data.QueryFilter ãŸã㯠FeatureClass çšã® ArcGIS.Core.Data.SpatialQueryFilter ã®ãããããæå®ããŸããããã©ã«ãå€ã¯ null ã§ãSelection ã¯ãªããžã§ã¯ã ID ããã£ã«ã¿ãªã³ã°ããªãããšãæå³ããŸãã
-
SelectionOption - SelectionOption.NormalãSelectionOption.NoneãSelectionOption.OnlyOne ã®ããããã® enum å€ãåããŸããããã¯ããã©ã«ãã®ãã©ã¡ãŒã¿ã§ãããã©ã«ãå€ã¯ SelectionOption.Normal ã§ãã
- SelectionOption.Normal - ãã£ã«ã¿ãŒã«äžèŽãããã¹ãŠã®ã¬ã³ãŒããæäŸããŸãã
- SelectionOption.OnlyOne - ãã£ã«ã¿ãŒã«äžèŽããæåã®ã¬ã³ãŒããæäŸããŸãã
- SelectionOption.None - 空ã®éžæãæäŸããŸããããã¯ãè€æ°ã®éžæãçµã¿åãããããã«äœ¿çšããããšãç®çãšããŠããŸãã
using (Geodatabase geodatabase = new Geodatabase(new DatabaseConnectionFile(new Uri("path\\to\\sde\\file\\sdefile.sde"))))
using (Table enterpriseTable = geodatabase.OpenDataset<Table>("LocalGovernment.GDB.piCIPCost"))
{
QueryFilter anotherQueryFilter = new QueryFilter { WhereClause = "FLOOR = 1 AND WING = 'E'" };
// Use SelectionOption.Normal to select all matching entries.
using (Selection anotherSelection = enterpriseTable.Select(anotherQueryFilter, SelectionType.ObjectID, SelectionOption.Normal))
{
}
// This can be used to get one record that matches the criteria. No assumptions can be made about which record satisfying the criteria is selected.
using (Selection onlyOneSelection = enterpriseTable.Select(anotherQueryFilter, SelectionType.ObjectID, SelectionOption.OnlyOne))
{
// This will always be one.
int singleRecordCount = onlyOneSelection.GetCount();
// This will always have one record.
IReadOnlyList<long> listWithOneValue = onlyOneSelection.GetObjectIDs();
}
// This can be used to obtain an empty selection, which can be used as a container to combine results from different selections.
using (Selection emptySelection = enterpriseTable.Select(anotherQueryFilter, SelectionType.ObjectID, SelectionOption.Empty))
{
}
}
ArcGIS.Core.Data.QueryFilter ãŸã㯠ArcGIS.Core.Data.SpatialQueryFilter ã§æå®ããã¯ãšãªã«äžèŽããè¡ã®ããŒã¿ãèªã¿èŸŒãã§ä¿®æ£ããã«ã¯ãTable ãŸã㯠FeatureClass ã®æ€çŽ¢ãå¿ èŠã§ãã
æ€çŽ¢çµæ㯠ArcGIS.Core.Data.RowCursor ã§ãSystem.Collections.IEnumerator ã€ã³ã¿ãŒãã§ã€ã¹ã«äŒŒãã€ã³ã¿ãŒãã§ã€ã¹ãæã¡ãŸãïŒReset ã¡ãœãããé€ãïŒãRowCursor.MoveNext() ã¯ãçµæã®æåŸã®ã¬ã³ãŒããè¿ããããã©ãããè¡šãããŒã«å€ãè¿ããŸããçµæã空ã®å ŽåãRowCursor.MoveNext() ã®æåã®åŒã³åºã㯠false ãè¿ããŸããéåžžãRowCursor ã®ãã¹ãŠã®è¡ã«ã¢ã¯ã»ã¹ããã«ã¯ãMoveNext ãš while ã«ãŒããçµã¿åãããŠäœ¿çšããŸããRowCursor.MoveNext() ã true ã®å ŽåãRowCursor.Current ã«ã¯ ArcGIS.Core.Data.Row ã®åç §ãäžããããŸãã察象ãšãªããªããžã§ã¯ãã¯ãTable ã®å Žå㯠ArcGIS.Core.Data.RowãFeatureClass ã®å Žå㯠ArcGIS.Core.Data.Feature ã§ãããªããžã§ã¯ããå®éã« Feature ãªããžã§ã¯ãã®å Žåã¯ãFeature ã«ãã£ã¹ãã㊠Shape ã«ã¢ã¯ã»ã¹ã§ããŸãã
Table ãŸã㯠FeatureClass ãæ€çŽ¢ããã«ã¯ã次㮠2 ã€ã®ãã©ã¡ãŒã¿ãæ〠Search ã¡ãœããã䜿çšããŸãã
- QueryFilter -ãã£ã«ã¿ã«ãããããè¡ããã§ããããããã®ãã£ã«ã¿ãæå®ããŸããæ¢å®å€ã¯ NULL ã§ãNULL ãæå®ãããšããŒãã«ã®ãã¹ãŠã®è¡ãååŸãããŸãã
- ãªãµã€ã¯ã«ã®ããŒã«å€ - è¡ã«ãŒãœã«ããååŸããé£ç¶ããè¡ããè¡ããšã«æ°ããã¡ã¢ãªäœçœ®ã䜿çšããããMoveNext ãåŒã³åºããããšãã«åãã¡ã¢ãªäœçœ®ã䜿çšããããæå®ããŸãããªãµã€ã¯ã«ã«ã€ããŠã¯ãåŸã®ã»ã¯ã·ã§ã³ã§è©³ãã説æããŸããããã©ã«ãã¯true ã§ãã
è¡ãå€æŽããå Žåã¯ã
QueryFilter
ã§Subfields
ã䜿çšããªãã§ãã ããã
using (Geodatabase geodatabase = new Geodatabase(new DatabaseConnectionFile(new Uri("path\\to\\sde\\file\\sdefile.sde"))))
using (FeatureClass schoolBoundaryFeatureClass = geodatabase.OpenDataset<FeatureClass>("LocalGovernment.GDB.SchoolBoundary"))
{
// Using a spatial query filter to find all features that have a certain district name and lying within a given Polygon.
SpatialQueryFilter spatialQueryFilter = new SpatialQueryFilter
{
WhereClause = "DISTRCTNAME = 'Indian Prairie School District 204'",
FilterGeometry = new PolygonBuilder(new List<Coordinate2D>
{
new Coordinate2D(1021880, 1867396),
new Coordinate2D(1028223, 1870705),
new Coordinate2D(1031165, 1866844)
}).ToGeometry(),
SpatialRelationship = SpatialRelationship.Within
};
// Without Recycling
using (RowCursor indianPrairieCursor = schoolBoundaryFeatureClass.Search(spatialQueryFilter, false))
{
while (indianPrairieCursor.MoveNext())
{
using (Feature feature = (Feature)indianPrairieCursor.Current)
{
int nameFieldIndex = feature.FindField("NAME");
string districtName = Convert.ToString(feature["DISTRCTNAME"]);
double area = Convert.ToDouble(feature["SCHOOLAREA"]);
string name = Convert.ToString(feature[nameFieldIndex]);
Geometry geometry = feature.GetShape();
}
}
}
}
RowCursor.MoveNext()
ã true ãè¿ããå ŽåãRow
ïŒãŸã㯠Feature
ïŒãªããžã§ã¯ããäœæãããããšã«æ³šæããŠãã ããããã®è¡ïŒRowCursor.Current
ïŒãä»ã§å¿
èŠãªãå Žåã§ããSystem.IDisposable.Dispose
ãåŒã³åºãããusing æã䜿çšããŠé©åã«åŠåããå¿
èŠããããŸãã
QueryFilterã¯ããŒãžåå²ããµããŒãããŠããŸããããã¯ã Offset
ããããã£ãš Rowcount
ããããã£ã䜿çšããŠã倧ããªã¯ãšãªçµæãå°ããªã¯ãšãªçµæã«åå²ããããšãç®çãšããŠããŸããOffset
ã¯ã¯ãšãªã®çµæããäœè¡ã¹ãããããããæå®ãã RowCount
ã¯ã¯ãšãªã«ãã£ãŠè¿ãããè¡æ°ãæå®ããŸãã
QueryFilter queryFilter = new QueryFilter()
{
ObjectIDs = objectIDs,
// Number of rows to return (return 100 rows)
RowCount = 100,
// Positional offset to skip number of rows (skip 20 rows)
Offset = 20,
PostfixClause = "ORDER BY OBJECTID"
};
ããŒã¿ã¹ãã¢ã«ãã£ãŠã¯æ£æçãªçµæã«ãªããªãããã«ã PostfixClause
ããããã£ã Offset
ããããã£ãŸã㯠RowCount
ããããã£ãšçµã¿åãããŠäœ¿çšããå¿
èŠããããŸãã
ArcGIS.Core.Data.Feature ã¯ãArcGIS.Core.Data.Row ãç¶æ¿ãããã£ãŒãã£äžã® Shape ãååŸã»èšå®ããã¡ãœãããè¿œå ããŠããŸãã
RowïŒããã³ FeatureïŒã«ã¯ãè¡ã®å±æ§ã«ã¢ã¯ã»ã¹ããããã®æŽæ°ããŒã¹ã®ã€ã³ãã¯ãµãšæååããŒã¹ã®ã€ã³ãã¯ãµããããŸãããã£ãŒã«ãã®ã€ã³ããã¯ã¹ãããã£ãŠããå Žå㯠æŽæ°ããŒã¹ã®ã€ã³ãã¯ãµ ã䜿ããããã£ãŒã«ãåãããã£ãŠããå Žå㯠æååããŒã¹ã®ã€ã³ãã¯ãµ ã䜿ãããŸããæ»ãå€ã¯åžžã« System.Object ã§ã察å¿ãã Field ãªããžã§ã¯ãããæšæž¬ããããã£ãŒã«ãã¿ã€ãã«åºã¥ããŠã察å¿ããã¿ã€ãã«ãã£ã¹ãããå¿ èŠããããŸãã
ãžãªã¡ããªãæ±ãã«ã¯ãGetShape() ãš SetShape(Geometry) ã䜿çšããå¿ èŠããããŸããGeometry 㯠äžå€ ã®ãªããžã§ã¯ãã§ãããããShape ãæ°ãããžãªã¡ããªã«èšå®ããã«ã¯ã察å¿ãããã«ããŒã䜿çšã㊠æ°ãããžãªã¡ããªãæ§ç¯ ããå¿ èŠããããŸãïŒFeature.GetShape() ã§ååŸããæ¢åã®ãžãªã¡ããªã䜿çšããå ŽåããããŸãïŒã
ãªãµã€ã¯ã«ã¯ãè€éã§å€§èŠæš¡ãªããŒã¿ã»ããã«ã¢ã¯ã»ã¹ããéã®ããã©ãŒãã³ã¹ãåäžãããããã«äœ¿çšããããšãã§ããäžè¬çã«ã¯ããããäžã®å³åœ¢ãã¬ã³ããªã³ã°ããããUI ã§ããŒãã«ãå ¥åãããããããã«äœ¿çšãããŸãã
ãªãµã€ã¯ã«ãæå¹ã«ããã«ã¯ãSearch ã®2çªç®ã®ãã©ã¡ãŒã¿ã true ã«èšå®ããŸãïŒããã©ã«ãã®ãã©ã¡ãŒã¿å€ã§ãïŒããªãµã€ã¯ã«ã䜿çšãããšãRowCursor 㧠MoveNext ãåŒã³åºãããšãã«ååŸããé£ç¶ãã Row åç §ã«å¯ŸããŠãMoveNext ã®ä»¥åã®å埩åŠçã§ååŸãããã¹ãŠã®åç §ããRowCursor.Current ãåç §ããŠããçŸåšã® Row ãæãããã«ãªããŸããããã¯ãMoveNext ãåŒã³åºããããšãåã®è¡ã¯å©çšã§ããªããªãããšãæå³ããŸãã
using (Geodatabase geodatabase = new Geodatabase(new DatabaseConnectionFile(new Uri("path\\to\\sde\\file\\sdefile.sde"))))
using (FeatureClass schoolBoundaryFeatureClass = geodatabase.OpenDataset<FeatureClass>("LocalGovernment.GDB.SchoolBoundary"))
{
QueryFilter queryFilter = new QueryFilter
{
WhereClause = "DISTRCTNAME = 'Indian Prairie School District 204'"
};
using (RowCursor indianPrairieCursor = schoolBoundaryFeatureClass.Search(queryFilter, true))
{
try
{
Row row1 = null;
if (indianPrairieCursor.MoveNext())
{
row1 = indianPrairieCursor.Current;
}
Row row2 = null;
if (indianPrairieCursor.MoveNext())
{
row2 = indianPrairieCursor.Current;
}
// If the code reaches this point, row1 and row2 are referencing the second row object obtained
// when the MoveNext was called the second time.
}
finally
{
if(row1 != null)
row1.Dispose();
if(row2 != null)
row2.Dispose();
}
}
}
è€æ°ã®ãã©ãããã©ãŒã ïŒãã¡ã€ã« ãžãªããŒã¿ããŒã¹ãSQL Server ãšã³ã¿ãŒãã©ã€ãº ãžãªããŒã¿ããŒã¹ãOracle ãšã³ã¿ãŒãã©ã€ãº ãžãªããŒã¿ããŒã¹ãã·ã§ãŒããã¡ã€ã«ãªã©ïŒã«å¯ŸããŠå®è¡ãããã¯ãšãªã®äœæãæ°ãããã£ãŒã«ãã®äœæãæ°ããããŒãã«ã®äœæã«ã¯ãèæ ®ãã¹ã埮åŠãªéãããããŸãã
ãã®äžéšã玹ä»ããŸãã
- ã¯ãšãªãå®è¡ããããŒã¿ããŒã¹ã®çŸåšã®çš®é¡ã«å¿ããç¹å®ã®é¢æ°å
- ããŒãã«åãã«ã©ã åãæ£ãããã©ãã
- å®å šä¿®é£ŸãããããŒãã«åã®ææè å
- æååæ¯èŒã§å€§æåå°æåãåºå¥ãããã©ãã
- åãå ¥ãããŸãã¯è¿ãããã¿ã€ã ã¹ã¿ã³ããæ¥ä»ããŸãã¯æéã®åœ¢åŒ
- ããŒãã«åãŸãã¯ãã£ãŒã«ãåãç¹å®ã®æåã§å§ãŸãããç¹å®ã®æåãå«ããã©ãã
- æå®ãããåèªãããŒã¿ããŒã¹ã®ããŒã¯ãŒããšã¿ãªããããã©ãã
- ã¯ãšãªã®äžã§ã©ã®ãã㪠SQL å¥ãè¿°èªã䜿çšã§ããã
è€æ°ã®ããŒã¿ãã©ãããã©ãŒã ã«å¯Ÿå¿ããã¢ããªã±ãŒã·ã§ã³ãéçºããããã«ã¯ããããã®ç¹ãèæ ®ããå¿ èŠããããŸãã
Datastore ããååŸãã SQLSyntax ã¯ã©ã¹ã¯ããããã®åãåããã«çããå®è¡ã«æåããã³ãŒããæžãããã®æ©èœãæäŸããŸããäŸãšããŠãSQLSyntax ã䜿çšãããã©ãããã©ãŒã ã«äŸåããªãã¯ãšãªã®äœæ ãåç §ããŠãã ããã
çµåã¯ã2ã€ã®ããŒãã«ã®ãã£ãŒã«ãã1ã€ã®ããŒãã«è¡šçŸã«ãŸãšããããã«äœ¿çšãããŸããçµåã«åå ããããŒãã«ã¯ãåãããŒã¿ã¹ãã¢ããã§ããç°ãªãããŒã¿ã¹ãã¢ããã§ãå¯èœã§ããçµåã¯ããªã¬ãŒã·ã§ã³ã·ããã¯ã©ã¹ããäœæãããŸãããªã¬ãŒã·ã§ã³ã·ããã¯ã©ã¹ã¯ããžãªããŒã¿ããŒã¹ããã®ãã®ã§ããä»®æ³ãªã¬ãŒã·ã§ã³ã·ããã¯ã©ã¹ãšããŠã¡ã¢ãªå ã«å®çŸ©ããããã®ã§ãæ§ããŸãããä»®æ³ãªã¬ãŒã·ã§ã³ã·ããã¯ã©ã¹ïŒRelate ã«ã䜿çšïŒã¯éèŠãªæŠå¿µã§ãããããã«ããçµåã¯ç°ãªãããŒã¿ã¹ãã¢ã®ããŒãã«ãçµåããããšãã§ããŸããäŸãã°ããšã³ã¿ãŒãã©ã€ãº ãã£ãŒãã£ã¯ã©ã¹ãã¯ãšãªã¬ã€ã€ãŒãšçµåããããã·ã§ã€ããã¡ã€ã«ã®ãã£ãŒãã£ã¯ã©ã¹ããã¡ã€ã«ãžãªããŒã¿ããŒã¹ã®ãã£ãŒãã£ã¯ã©ã¹ãšçµåãããããããšãã§ããŸããçµåã¯ãããŒã¿ã¹ãã¢éã§å®è¡ã§ãããšããç¹ã§ãQueryDef ãšã¯ç°ãªããŸãã çµåã¯ãäžå¯Ÿå€ã®ã«ãŒãã£ããªãã£ããµããŒãããŸãããçµåã¯èªã¿åãå°çšã§ãããããŒã¹ ããŒãã«ã«å ããããããŒã¿å€æŽã¯åæ ãããŸããçµåãäœæããã«ã¯ã2ã€ã®ããŒãã«ïŒãŸãã¯ãã£ãŒãã£ã¯ã©ã¹ïŒãšãªã¬ãŒã·ã§ã³ã·ããã¯ã©ã¹ãå¿ èŠã§ãã
ArcGIS.Core.Data API 㧠Join ãååŸããã«ã¯ããŸããªã¬ãŒã·ã§ã³ã·ããã¯ã©ã¹ãååŸããå¿ èŠããããŸããããã¯ããžãªããŒã¿ããŒã¹ããéããã RelationshipClass ã§ãããããŸã㯠VirtualRelationshipClassDescription ã䜿çšããŠã€ã³ã¡ã¢ãªã® RelationshipClass ãäœæããããšãã§ããŸããVirtualRelationshipClassDescription ãäœæããã«ã¯ãå·ŠããŒãã«ãšå³ããŒãã«ã®äž¡æ¹ãå¿ èŠã§ããäŸãã°ã以äžã®ããã«ãªããŸãã
ArcGIS.Desktop.Mapping.Layer selectedLayer = MapView.Active.GetSelectedLayers()[0];
if (selectedLayer is ArcGIS.Desktop.Mapping.FeatureLayer)
{
using (Geodatabase geodatabase = new Geodatabase(new DatabaseConnectionFile(new Uri("path\\to\\sde\\file\\sdefile.sde"))))
using (FeatureClass leftFeatureClass = geodatabase.OpenDataset<FeatureClass>("LocalGovernment.GDB.SchoolBoundary"))
using (Table rightTable = (selectedLayer as FeatureLayer).GetTable())
{
FeatureClassDefinition leftFeatureClassDefinition = leftFeatureClass.GetDefinition();
IReadOnlyList<Field> listOfFields = leftFeatureClassDefinition.GetFields();
Field originPrimaryKey = listOfFields.FirstOrDefault(field => field.Name.Equals("primaryKeyField"));
Field destinationForeignKey = listOfFields.FirstOrDefault(field => field.Name.Equals("foreignKeyField"));
VirtualRelationshipClassDescription relationshipClassDescription = new VirtualRelationshipClassDescription(originPrimaryKey, destinationForeignKey, RelationshipCardinality.OneToMany);
RelationshipClass relationshipClass = leftFeatureClass.RelateTo(rightTable, relationshipClassDescription);
}
}
ãªã¬ãŒã·ã§ã³ã·ããã¯ã©ã¹ã決ãŸã£ãããJoinDescription ã䜿ã£ãŠä»¥äžã®ããã«çµåã®å±æ§ãæå®ããŸãã
- ãªã¬ãŒã·ã§ã³ã·ããã¯ã©ã¹: çµåã®å¿ é åŒæ°
- JoinType: çµåãå éšçµåãå·Šå€éšçµåã
- JoinDirection: çµåãå·Šã®ããŒãã«ããå³ã®ããŒãã«ã«è¡ãã®ãïŒForwardïŒãå³ã®ããŒãã«ããå·Šã®ããŒãã«ã«è¡ãã®ãïŒBackwardïŒ
- TargetFields: å·ŠããŒãã«ã®ãã£ãŒã«ããå«ããå¿ èŠãããïŒçµåã Backward ã®å Žåã察象ãšãªããã£ãŒã«ãã¯å³ããŒãã«ã®ãã®ã§ããããšã«æ³šæããŠãã ããïŒ
- QueryFilter: ã¯ãšãªã«åºã¥ããŠçµåã®å 容ããã£ã«ã¿ãªã³ã°ãã
- Selection: çµåãäœæããéã«äœ¿çšããéžæé ç®
JoinDescription joinDescription = new JoinDescription(relationshipClass)
{
JoinType = JoinType.LeftOuterJoin,
JoinDirection = JoinDirection.Backward
};
using (Join join = new Join(joinDescription))
using (Table joinedTable = join.GetJoinedTable())
{
// The joinedTable is an ArcGIS.Core.Data.Table reference that can be either an ArcGIS.Core.Data.Table or an
// ArcGIS.Core.Data.FeatureClass (depending upon whether the join has a Shape column).
}
çµåã«ã€ããŠæ³šæãã¹ãç¹ããããŸãã
- Definition ã¯äžæçãªãã®ãªã®ã§ãçµåã§ã¯ãµããŒããããŸããã
- çµåããåŸãããããŒãã«ã®éžæã¯ãäžæã®èå¥ååã®ç°ãªãå€ã«åºã¥ããŠè¡ãããŸããã€ãŸããäžå¯Ÿå€ã®ãªã¬ãŒã·ã§ã³ã·ããã¯ã©ã¹ã䜿çšããçµåã§ãå·Šã®ããŒãã«ã®åãè¡ãå³ã®ããŒãã«ã®è€æ°ã®è¡ãšäžèŽããå Žåãéžæã§ã¯äžèŽãã1ã€ã®è¡ããè¿ãããŸããããæ€çŽ¢ã§ã¯ãã¹ãŠã®è¡ãè¿ãããŸãã
- ããã©ãŒãã³ã¹ãåäžãããããã«ããµãŒããŒåŽã§çµåãå®è¡ããïŒçµåãå«ã SQL ã¯ãšãªãå®è¡ããŠçµæãè¿ãïŒããã«ããããè©Šã¿ãè¡ãããŸãããããã§ããªãå ŽåïŒäŸãã°ãå·ŠããŒãã«ãšå³ããŒãã«ãç°ãªãããŒã¿ã¹ãã¢ã®å ŽåïŒãçµåã¯ã¯ã©ã€ã¢ã³ãåŽã§å®è¡ãããŸãã
-
JoinDescription.ErrorOnFailureToProcessJoinOnServerSide
ããããã£ãèšå®ãããšã匷å¶çã«ãµãŒããŒäžã§çµåãå®è¡ããããšãã§ããŸããçµåããµãŒããŒäžã§å®è¡ã§ããªãå Žåã¯ããšã©ãŒãè¿ãããŸãã
ãžãªããŒã¿ããŒã¹ã§ã¯ããœãŒããããé åºã§è¡ã«ãŒãœã«ãäœæããæ©èœããããŸããããã¯ãTable.Sort()
ã¡ãœããã«ãã£ãŠå®çŸãããŸããSort
ã¯ãQueryFilter ãš SortDescription ã®ã»ãããçµã¿åããã TableSortDescription ãªããžã§ã¯ããåŒæ°ãšããŠåãåããŸãã
SortDescription ã¯ã©ã¹ã¯ãç¹å®ã®ãã£ãŒã«ãã§ã®ãœãŒããå¯èœã«ããŸãããã®ãªããžã§ã¯ãã®ããããã£ã«ãããåŒã³åºãå ã¯ããœãŒããæé ãéé ãã倧æåãšå°æåãåºå¥ãããããªãããæå®ããããšãã§ããŸãã
次ã®ã¹ããããã¯ãWorld Cities ããŒãã«ãåœåãéœåžåã®é ã«ãœãŒãããŠè¿ããŸãã
public RowCursor SortWorldCities(FeatureClass worldCitiesTable)
{
using (FeatureClassDefinition featureClassDefinition = worldCitiesTable.GetDefinition())
{
Field countryField = featureClassDefinition.GetFields().First(x => x.Name.Equals("COUNTRY_NAME", StringComparison.OrdinalIgnoreCase));
Field cityNameField = featureClassDefinition.GetFields().First(x => x.Name.Equals("CITY_NAME", StringComparison.OrdinalIgnoreCase));
// Create SortDescription for Country field
SortDescription countrySortDescription = new SortDescription(countryField);
countrySortDescription.CaseSensitivity = CaseSensitivity.Insensitive;
countrySortDescription.SortOrder = SortOrder.Ascending;
// Create SortDescription for City field
SortDescription citySortDescription = new SortDescription(cityNameField);
citySortDescription.CaseSensitivity = CaseSensitivity.Insensitive;
citySortDescription.SortOrder = SortOrder.Ascending;
// Create our TableSortDescription
TableSortDescription tableSortDescription = new TableSortDescription(new List<SortDescription>() { countrySortDescription, citySortDescription });
return worldCitiesTable.Sort(tableSortDescription);
}
}
ãžãªããŒã¿ããŒã¹ã«ã¯ãããŒãã«ãã£ãŒã«ãã®çµ±èšãèšç®ãã匷åãªããŒã«ããããŸãããããã®çµ±èšã¯ããµããŒããããŠããå Žåã¯ãµãŒããŒã§èšç®ãããŸããçµ±èšã¯ãTable ã¯ã©ã¹ã® CalculateStatistics()
ã¡ãœãããåŒã³åºããŠèšç®ãããŸãã
CalculateStatistics()
ã¯ãçµ±èšã®èšç®æ¹æ³ãæå®ãã TableStatisticsDescription ãªããžã§ã¯ããåãåããŸãã
QueryFilter ããããã£ã䜿çšãããšãçµ±èšèšç®ãè¡ãåã«ããŒãã«ã®è¡ããã£ã«ã¿ãªã³ã°ããããšãã§ããŸãããªãã·ã§ã³ã® GroupBy ããããã£ã¯è¡ãã°ã«ãŒãåãããªãã·ã§ã³ã® OrderBy ããããã£ã¯ãã®ã°ã«ãŒãããœãŒãããŸããããŒã¿ã¹ãã¢ã Group By ãš Order By ããµããŒãããŠããªãå ŽåïŒäŸïŒã·ã§ãŒããã¡ã€ã«ïŒããããã®ããããã£ã¯ç¡èŠãããŸãã
æåŸã«ãStatisticsDescriptions ããããã£ã«ã¯ãèšç®ããçµ±èšå€ã®ã»ãããå«ãŸããŠããŸãã
StatisticsDescription ã¯ã©ã¹ã䜿çšãããšãæå®ããããã£ãŒã«ãã«å¯ŸããŠèšç®ããããŸããŸãªé¢æ°ã®ã»ãããåŒã³åºãåŽã§æå®ããããšãã§ããŸããäžèšã®ã¯ã©ã¹ã䜿çšãããšãTable.CalculateStatistics()
ã1ååŒã³åºãã ãã§ãè€æ°ã®ãã£ãŒã«ãã«å¯Ÿããè€æ°ã®çµ±èšæ
å ±ãèšç®ããããšãã§ããŸãã
æ»ãå€ã¯ãTableStatisticsResult ãªããžã§ã¯ãã®ã»ããã§ããGroupBy ãæå®ãããŠããªãå ŽåããŸãã¯ããŒã¹ãšãªãããŒã¿ã¹ãã¢ã GroupBy ããµããŒãããŠããªãå Žåã1ã€ã® TableStatisticsResult ãè¿ãããŸãããã以å€ã®å Žåã¯ããã£ãŒã«ãã®ã°ã«ãŒãã³ã°ããšã«1ã€ã® TableStatisticsResult ã€ã³ã¹ã¿ã³ã¹ãè¿ãããŸãã
TableStatisticsResult ãªããžã§ã¯ãã® GroupBy ããããã£ã¯ãè¿ãããã°ã«ãŒãåã«ã€ããŠèª¬æããŸããããŒãšå€ã®ãã¢ã¯ãã°ã«ãŒãã® Field ãšãã®ãã£ãŒã«ãã®å€ãè¡šããŸããå ã® GroupBy ã®åãã£ãŒã«ãã«å¯ŸããŠ1ã€ã® key-value ãã¢ãè¿ãããŸãã
StatisticsResults ãªã¹ãã«ã¯ãèšç®ãããçµ±èšæ å ±ã®ãªã¹ããå«ãŸããŠããŸãã
StatisticsResults ãªããžã§ã¯ãã§ã¯ãåãã£ãŒã«ãã«å¯ŸããŠã©ã®çµ±èšãèŠæ±ããããã«åºã¥ããŠãé©åãªããããã£ã®ã¿ãå ¥åãããŸãã
äŸãã°ã3ã€ã®ãã£ãŒã«ãïŒRegionãPopulation_1990ãPopulation_2000ïŒãå«ã Country ããŒãã«ãèããŠã¿ãŸãããã4ã€ã®å°åã"North"ã"South"ã"East"ã"West" ããããŸãããããã®å°åã®ããããã«ã€ããŠãPopulation_1990 ãš Population_2000 ãã£ãŒã«ãã®åèšãšå¹³åãèšç®ããããšèããŸãããã®èšç®ãè¡ãããã«ãTableStatisticsDescription ã以äžã®ããã«çµã¿ç«ãŠãŸãã
Table.CalculateStatistics()
ã¡ãœããã¯ã以äžã®ãããªTableStatisticsResults ãªããžã§ã¯ãã®ãªã¹ããè¿ããŸãã
次ã®ã³ãŒããµã³ãã«ã¯ãäžèšã®äŸãšäžèŽããŠããŸãã
// Calculate the Sum and Average of the Population_1990 and Population_2000 fields, grouped and ordered by Region
public void CalculateStatistics(FeatureClass countryFeatureClass)
{
using (FeatureClassDefinition featureClassDefinition = countryFeatureClass.GetDefinition())
{
// Get fields
Field regionField = featureClassDefinition.GetFields().First(x => x.Name.Equals("Region"));
Field pop1990Field = featureClassDefinition.GetFields().First(x => x.Name.Equals("Population_1990"));
Field pop2000Field = featureClassDefinition.GetFields().First(x => x.Name.Equals("Population_2000"));
// Create StatisticsDescriptions
StatisticsDescription pop1990StatisticsDescription = new StatisticsDescription(pop1990Field, new List<StatisticsFunction>() { StatisticsFunction.Sum, StatisticsFunction.Average });
StatisticsDescription pop2000StatisticsDescription = new StatisticsDescription(pop2000Field, new List<StatisticsFunction>() { StatisticsFunction.Sum, StatisticsFunction.Average });
// Create TableStatisticsDescription
TableStatisticsDescription tableStatisticsDescription = new TableStatisticsDescription(new List<StatisticsDescription>() { pop1990StatisticsDescription, pop2000StatisticsDescription });
tableStatisticsDescription.GroupBy = new List<Field>() { regionField };
tableStatisticsDescription.OrderBy = new List<SortDescription>() { new SortDescription(regionField) };
// Calculate Statistics
IReadOnlyList<TableStatisticsResult> statisticsResults = countryFeatureClass.CalculateStatistics(tableStatisticsDescription);
// Code to process results goes here...
}
}
ããŒã¿ã®ã¯ãšãªã«ã¯ãããŒãã«ãŸãã¯ãã£ãŒãã£ã¯ã©ã¹ã®æ€çŽ¢ãQueryDefãQueryTableãã¯ãšãªã¬ã€ã€ãŒãçµå ãªã©ãããŸããŸãªæ§æããããŸãã以äžã«ãç¹å®ã®ã·ããªãªã«ãããç¹å®ã®æ§æèŠçŽ ã®å©ç¹ã瀺ããŸãã
- ãžãªããŒã¿ããŒã¹ã«ç»é²ãããŠãã1ã€ã®ããŒãã«ã察象ãšããåçŽãªã¯ãšãª: Table.Search ã FeatureClass.Search ãæãé©ããŠããŸãã
- ããŒã¿ãååŸããããã«ãžãªããŒã¿ããŒã¹å ã§çµåãè¡ãåçºã®ã¯ãšãª: QueryDef ã¯ãã¯ãšãªã«äžèŽããããŒã¿ãå«ãè¡ã«ãŒãœã«ãè¿ãã®ã§ãæãé©ããŠããŸãã
- ãžãªããŒã¿ããŒã¹å ã®2ã€ä»¥äžã®ããŒãã«ãçµåããåãã¯ãšãªãè€æ°å䜿çšããå Žå: QueryTable ã®æ¹ãé©ããŠãããããããŸãããQueryDef ã®è©äŸ¡ãè€æ°åå®è¡ããã®ã«æ¯ã¹ãŠãããã©ãŒãã³ã¹äžã®å©ç¹ãããããã§ãã
- ãžãªããŒã¿ããŒã¹å ã®1ã€ã®ããŒãã«ãå«ãã¯ãšãªã®çµæããããã«è¿œå ãããããžãªããã»ã·ã³ã°ããŒã«ã§çµæã䜿çšãããããå Žå: ãã®ç®çã«ã¯ãQueryTable ãæãé©ããŠããŸããããã«ãQueryTable ã¯ããŒãžã§ã³ç®¡çãããããŒã¿ïŒåå«ããŒãžã§ã³ã䜿çšããå ŽåïŒãã¢ãŒã«ã€ããããããŒã¿ïŒéå»ã®æç¹ã®ããŒã¿ã䜿çšããå ŽåïŒã§ãæ©èœããŸãã
- ãžãªããŒã¿ããŒã¹å ã®2ã€ä»¥äžã®ããŒãã«ãçµåããã¯ãšãªã®çµæããããã«è¿œå ãããããžãªããã»ã·ã³ã°ããŒã«ã§çµæã䜿çšãã: ãã®å ŽåãQueryTable ãŸãã¯çµåãé©ããŠããŸããã©ã¡ãã®æ§é ãååž°çãªçµåãå¯èœã§ããïŒçµåããŒãã«ããçµåãäœæããããã¯ãšãªããŒãã«ããã¯ãšãªããŒãã«ãäœæãããïŒãããŒãžã§ã³ç®¡çãããããŒã¿ãã¢ãŒã«ã€ããããããŒã¿ãæ±ãããšãã§ããŸãã
- åçŽãªã¯ãšãªãçµåãããŒã¿ããŒã¹å ã§å®è¡ããå ŽåïŒãžãªããŒã¿ããŒã¹ã®ã¹ããŒãããªãå ŽåïŒ: ã¯ãšãªã¬ã€ã€ãŒãæãé©ããæ§æã§ãã
- è€æ°ã®ããŒã¿ã¹ãã¢ïŒãã¡ã€ã«ãžãªããŒã¿ããŒã¹ãš SQL Server ããŒã¿ããŒã¹ãªã©ïŒã«ãŸãããçµåãå®è¡ããå Žå: çµåã¯ãè€æ°ã®ããŒã¿ã¹ãã¢ã®ããŒã¿ãçµåã§ããå¯äžã®æ§æèŠçŽ ã§ãã
ããŒãžã§ãã³ã°ã«ãããè€æ°ã®ãŠãŒã¶ãŒãé·æéã®ãã©ã³ã¶ã¯ã·ã§ã³ç°å¢ã§ç©ºéããŒã¿ã衚圢åŒããŒã¿ãåæã«ç·šéããããšãã§ããŸãããŠãŒã¶ãŒã¯ãããŒã¿ã®æœåºããã£ãŒãã£ã®ããã¯ãäºåã«è¡ãããšãªããããŒã¿ããŒã¹ãçŽæ¥å€æŽããããšãã§ããŸãã
以äžã¯ãAPI ãæäŸãã5ã€ã®äž»èŠãªæ©èœã§ãã
- ãžãªããŒã¿ããŒã¹å ã®ãã¹ãŠã®ããŒãžã§ã³ããããŒãžã§ã³ã®ããããã£ãå«ããŠäžèŠ§è¡šç€ºãã
- ç¹å®ã®ããŒãžã§ã³ãžã®æ¥ç¶
- æ°ããããŒãžã§ã³ã®äœæ
- ç°ãªãããŒãžã§ã³ã®ããŒãã«ãšãã£ãŒãã£ã¯ã©ã¹ã®éããäžèŠ§è¡šç€ºãã
- ãªã³ã³ãµã€ã«ãšãã¹ã
VersionManager ãªããžã§ã¯ãã¯ãGeodatabase ãªããžã§ã¯ãããã¢ã¯ã»ã¹ã§ããŸããVersionManager ã¯ãçŸåšæ¥ç¶ãããŠããããŒãžã§ã³ãå±¥æŽããŒãžã§ã³ã®ãªã¹ããããã³çŸåšæ¥ç¶ãããŠãããŠãŒã¶ãŒãææãããã¹ãŠã®ãããªã㯠ããŒãžã§ã³ãä¿è·ãããããŒãžã§ã³ãããã³ãã©ã€ããŒã ããŒãžã§ã³ã®ãªã¹ããžã®ã¢ã¯ã»ã¹ãæäŸããŸããVersionManager ã¯ãGeodatabase ãªããžã§ã¯ãã® IsVersioningSupported ã¡ãœããã true
ãè¿ããå Žåã«ã®ã¿ã¢ã¯ã»ã¹å¯èœã§ããç¹å®ã®ãžãªããŒã¿ããŒã¹ã§äœ¿çšãããŠããããŒãžã§ãã³ã°ã®ã¿ã€ãïŒãã©ã³ããŸãã¯ãã©ãã£ã·ã§ãã«ïŒã¯ãVersionManager.GetVersioningType()
ãåŒã³åºãããšã§ç¢ºèªã§ããŸãã
The VersionBase
class represents either a Version
or a HistoricalVersion
in a Geodatabase. The VersionManager.GetCurrentVersionBaseType()
returns whether the current geodatabase is connected to a Version
or a HistoricalVersion
.
è¿ãããããŒãžã§ã³ã¯ ArcGIS.Core.Data.Version ãªããžã§ã¯ãã§ããã以äžãžã®ã¢ã¯ã»ã¹ãå¯èœã§ãã
- ååãã¢ã¯ã»ã¹ ã¿ã€ãã説æãªã©ã®å±æ§
- 芪ããŒãžã§ã³ ãªããžã§ã¯ã
- åããŒãžã§ã³ ãªããžã§ã¯ãã®ãªã¹ã
- çŸåšã®ãŠãŒã¶ããã®ããŒãžã§ã³ã®ææè ã§ãããã©ãã
VersionManager ããååŸãã Version ãªããžã§ã¯ãã§è¡šãããããŒãžã§ã³ã«æ¥ç¶ããã«ã¯ãVersion ãªããžã§ã¯ãã® Connect ã¡ãœãããåŒã³åºãã察å¿ãã Geodatabase ãªããžã§ã¯ããè¿ãããšã§ãGeodatabase ã®ãã®ããŒãžã§ã³ã®ããŒã¿ã»ãããååŸããããšãã§ããŸãã
VersionManager
ã¯ã©ã¹ã®å¥ã®ã¡ãœããã§ãã GetVersionNames()
ã¯ãããŒãžã§ã³ãã®ãã®ã§ã¯ãªããããŒãžã§ã³åã®ãªã¹ããæäŸããŸããé©çšå¯èœãªããŒãžã§ã³ã®ãªã¹ãã衚瀺ããããšãç®çã§ããã°ããã®ã«ãŒãã³ã¯é«éã§è»œéã§ãããã®ååã¯ãåŸã§ VersionManager.GetVersion(string)
ãåŒã³åºããŠãVersion
ãååŸããããã«äœ¿çšã§ããŸãã
æ°ããããŒãžã§ã³ãäœæããã«ã¯ãé©åãªããããã£ãæ〠VersionDescription ãäœæããå¿ èŠããããŸãããã®ããŒãžã§ã³èª¬æã¯ãVersionManager ã¯ã©ã¹ ã® CreateVersion ã«æž¡ãããŸããããã«ãããããã©ã«ãã®åãšãªãæ°ããããŒãžã§ã³ãäœæãããŸãããã©ãã£ã·ã§ãã«ãªïŒãã©ã³ãã§ã¯ãªãïŒããŒãžã§ãã³ã°ã䜿çšããŠããå Žåã¯ããªãŒããŒããŒãã«ãããä»ã®ããŒãžã§ã³ã®åã§ããããŒãžã§ã³ãäœæããããšãã§ããŸãã
éããèŠã€ããã«ã¯ã以äžã®ãããªã¯ãŒã¯ãããŒãèããããŸãã
- Geodatabase ã§èª¬æãããŠããã¡ãœããã®ããããã䜿çšããŠãGeodatabase ãªããžã§ã¯ããååŸããŸãã
- VersionManager ã䜿çšããŠã察象ãšãªãä»ã® Version ãªããžã§ã¯ããèŠã€ããŸãã
- Connect() ã䜿çšããŠãä»ã®ããŒãžã§ã³ã® Geodatabase ãªããžã§ã¯ããååŸããŸãã
- äž¡æ¹ã® Geodatabase ãªããžã§ã¯ããã察å¿ãã Table/FeatureClasses ãéããŸãã
- Differences ã¡ãœããã䜿çšããŠãDifferenceCursor ãååŸããŸãã
å·®åã®ã¿ã€ãã¯ãArcGIS.Core.Data.DifferenceType åæäœã䜿çšã㊠Differences ã¡ãœããã®ãã©ã¡ãŒã¿ãšããŠæå®ã§ããŸãã
ãã£ãŒã㣠ãµãŒãã¹ ã¯ãŒã¯ã¹ããŒã¹ã§ã¯ãArcGIS Enterprise 10.7 以éã®ãã©ã³ã ããŒãžã§ãã³ã°ã®ã¿ããµããŒããããŸãããœãŒã¹ ããŒãã«ã¯åãã©ã³ãã®ãã®ã§ãã¿ãŒã²ãã ããŒãã«ã¯ DEFAULT ã®ãã®ã§ãªããã°ãªããŸãããå·®åã¿ã€ãã® DeleteNoChange
ã¯åããŒãžã§ã³ã§è¡ãããåé€ããInsert
ã¯åããŒãžã§ã³ã§è¡ãããæ¿å
¥ããUpdateNoChange
ã¯åããŒãžã§ã³ã§è¡ããããã¹ãŠã®æŽæ°ãè¿ããŸãããã®ä»ã®å·®åã¿ã€ãã¯ãµããŒããããŠããŸããã
using (Geodatabase geodatabase = new Geodatabase(new DatabaseConnectionFile(new Uri("path\\to\\sde\\file\\sdefile.sde"))))
using (VersionManager versionManager = geodatabase.GetVersionManager())
{
IReadOnlyList<Version> versionList = versionManager.GetVersions();
IReadOnlyList<Version> childVersionList = null;
try
{
IEnumerable<Version> publicVersions = versionList.Where(version => version.GetAccessType() == VersionAccessType.Public);
// The default version will have a null Parent.
Version defaultVersion = versionList.First(version => version.GetParent() == null);
childVersionList = defaultVersion.GetChildren();
Version qaVersion = childVersionList.First(version => version.GetName().Contains("QA"));
using (Geodatabase qaVersionGeodatabase = qaVersion.Connect())
{
FeatureClass currentFeatureClass = geodatabase.OpenDataset<FeatureClass>("featureClassName");
FeatureClass qaFeatureClass = qaVersionGeodatabase.OpenDataset<FeatureClass>("featureClassName");
DifferenceCursor differenceCursor = currentFeatureClass.Differences(qaFeatureClass, DifferenceType.DeleteNoChange);
while (differenceCursor.MoveNext())
{
// The current row value refers to the row on the source Table/FeatureClass.
// Thus, for DeleteNoChange differences, the row will be null.
using (Row current = differenceCursor.Current)
{
}
long objectID = differenceCursor.ObjectID;
// Do something with the object Id.
}
}
}
finally
{
if (versionList != null)
{
foreach (Version version in versionList)
{
version.Dispose();
}
}
if (childVersionList != null)
{
foreach (Version version in childVersionList)
{
version.Dispose();
}
}
}
}
ããŒãžã§ã³ã®ãªã³ã³ãµã€ã«ãšãã¹ãã£ã³ã°ã¯ãVersion
ã¯ã©ã¹ã® Reconcile
ãš Post
ãšããäºã€ã®ç°ãªãã¡ãœããã§å®çŸãããŸãã
Post
ã¡ãœããã¯ãåŒæ°ãšã㊠PostOptions
ãªããžã§ã¯ãã䜿çšããŸãããã¹ã ãªãã·ã§ã³ãªããžã§ã¯ãã¯ãéšåãã¹ãã®ããã«éžæãããã£ãŒãã£ã®ãªã¹ãããµãŒãã¹åæã¿ã€ã (Post
ãåæããŠå®è¡ãããã©ãã)ãã¿ãŒã²ããããŒãžã§ã³ (ããã©ã«ãããŒãžã§ã³ãæå®ããå Žå㯠null ã䜿çšããŸã) ãæå®ããŸãã
Reconcile
ã¡ãœããã¯ãåŒæ°ãšã㊠ReconcileOptions
ãªããžã§ã¯ãã䜿çšããŸãããªã³ã³ãµã€ã« ãªãã·ã§ã³ ãªããžã§ã¯ãã¯ã競åã®è§£æ±ºæ¹æ³ (競åãèŠã€ãã£ããäžæãããç¶ç¶ããã)ã競åã®æ€åºã¿ã€ã (è¡åäœãŸãã¯ååäœ)ãã¿ãŒã²ããããŒãžã§ã³ (ããã©ã«ãããŒãžã§ã³ãæå®ããå Žå㯠null ã䜿çš) ãæå®ããŸãã
åãç·šéã»ãã·ã§ã³ã§ããªã³ã³ãµã€ã«ã®çŽåŸã«ããŒãžã§ã³ããã¹ãããã«ã¯ããªãŒããŒããŒã Reconcile(ReconcileOptions, PostOptions)
ã䜿çšããå¿
èŠããããŸãã
ããŒã: ãã©ãã£ã·ã§ãã« ããŒãžã§ãã³ã°ã¯ã¹ã¿ã³ãã¢ãã³ ãã¹ãã
Version.Post(PostOptions)
ããµããŒãããªãã®ã§ããã¹ãã«ã¯Version.Reconcile(ReconcileOptions, PostOptions)
ã䜿çšããªããã°ãªããŸããããã©ã³ã ããŒãžã§ãã³ã°ã¯ã¹ã¿ã³ãã¢ãã³ ãã¹ãVersion.Post(PostOptions)
ããµããŒãããŸãããVersion.Reconcile()
ããããããåŒã³åºããŠããå¿ èŠããããŸãã
ãã©ãã£ã·ã§ãã«ã®ããŒãžã§ãã³ã°ã䜿çšããå Žåã競å解決ã®ã¿ã€ããèšå®ããããšã§ãã¿ãŒã²ããããŒãžã§ã³ãšç·šéããŒãžã§ã³ã®ã©ã¡ããåªå ããŠç«¶åã解決ããããæå®ããããšãã§ããŸãã
ãã©ã³ã ããŒãžã§ã³ã®ãªãŒããŒãå€æŽããã«ã¯ãVersion.ChangeOwner
ã«ãŒãã³ãåŒã³åºããŸãã
ãªã³ã³ãµã€ã«ãè¡ãéãç·šéäžã®ããŒãžã§ã³ã¯ã¿ãŒã²ãã ããŒãžã§ã³ããã®å€æŽã§æŽæ°ãããŸããã¿ãŒã²ãã ããŒãžã§ã³ã«å€æŽãããŒãžããããšã¯ãããŸããããªã³ã³ãµã€ã«åŸãã³ã³ããªã¯ãã確èªããåŸãã¿ãŒã²ãã ããŒãžã§ã³ã«å€æŽããã¹ãããããšã§ããŒãžããã»ã¹ãå®äºããŸãã
ããŒã·ã£ã« ãã¹ãããããšã§ãéçºè ã¯ããŒãžã§ã³ã§è¡ãããå€æŽã®ãµãã»ããããã¹ãããããšãã§ããŸãã䜿çšäŸãšããŠã¯ãé»åäŒç€Ÿãæ°ããåè²äœå® ã®èšåãèšèšããããã«ããŒãžã§ã³ã䜿çšããå ŽåããããŸããããã»ã¹ã®ããæç¹ã§ãæ°ããäœå® ã®1ãããã¯ã¯å®æããŠããããæ®ãã®åè²å°ã¯æªå»ºèšã®ãŸãŸã§ããéšåçã«ãã¹ãããããšã§ããŠãŒã¶ã¯å®æããäœæ¥ããã¹ãããäžæ¹ã§ããŸã 建èšãããŠããªããã£ãŒãã£ãããŒãžã§ã³ã«æ®ããåŸã§ãã¹ãããããšãã§ããŸãã
ã©ã®ãã£ãŒãã£ããã¹ãããããæå®ããã«ã¯ãPostOptions.PartialPostSelections
ããããã£ã䜿ããŸãããã®ããããã£ã¯ãObjectID ããŒã¹ã®éžæãªã¹ããä¿æããŸããæŽæ°ãæ¿å
¥ã®å Žåããããã®éžæé
ç®ã®äœæã¯æ¯èŒçç°¡åã§ããäŸãã°ããã£ãŒãã£ã¯ã©ã¹ã® ConstructedStatus ãã£ãŒã«ãã䜿çšããŠããã£ãŒãã£ããã¹ãã§ããç¶æ
ã§ããããšã瀺ãããšãã§ããŸãã
QueryFilter constructedFilter = new QueryFilter()
{
WhereClause = "ConstructedStatus = 'True'"
};
Selection constructedSupportStructures = supportStructureFeatureClass.Select(constructedFilter, SelectionType.ObjectID, SelectionOption.Normal);
åé€ããããã£ãŒãã£ã®ã»ãããååŸããã¯ãšãªãçºè¡ããããšãã§ããªãããããã¹ãããããã£ãŒãã£ã®åé€ãæå®ããã®ã¯å°ãé£ããã§ãã代ããã«ãæå㧠ObjectID ã®ãªã¹ããäœæããå¿ èŠããããŸãïŒãã®ãªã¹ãã®äœæã¯ãã¡ããéçºè 次第ã§ãããå±æ§ã«ãŒã«ã䜿çšããŠãã£ãŒãã£ã®åé€ãèšé²ãããšããå®è£ æ¡ããããŸãïŒããã®ãªã¹ããäœæãããã次ã®ããã«ã㊠Selection ãäœæããŸãã
Selection deletedSupportStructures = supportStructureFeatureClass.Select(null, SelectionType.ObjectID, SelectionOption.Empty);
deletedSupportStructures.Add(deletedSupportStructureObjectIDs);
ã©ã¡ãã®å Žåããéžæé
ç®ã«ãã®ããŒãžã§ã³ã§å€æŽãããŠããªããã£ãŒãã£ãå«ãŸããŠãããšãããŒã·ã£ã« ãã¹ãã¯å€±æããŸããäžèšã®ã»ã¯ã·ã§ã³ã§èª¬æããããã«ãå€æŽããããã£ãŒãã£ã確èªããããã« Table.Differences
ã䜿çšããããšãã§ããŸãã
ããŒã·ã£ã« ãã¹ãã¯ãArcGIS Enterprise 10.9 以éã®ãã©ã³ã ããŒãžã§ãã³ã°ã§ãµããŒããããŠãããããŒã»ã« ãã¡ããªãã¯ãããããžãŒã§ã¯çŸåšãµããŒããããŠããŸããã
rcGIS Enterprise 11.3 ãŸã㯠Pro SDK 3.3 以éããŠãŒãã£ãªã㣠ãããã¯ãŒã¯ã¯ãããŒã·ã£ã« ãã¹ãããµããŒãããŠããŸãã
ãªã³ã³ãµã€ã«æäœã®éãåããŒãžã§ã³ã§è¡ãããå€æŽã¯ãããŒãžãããã¿ãŒã²ãã ããŒãžã§ã³ãšæ¯èŒãããŸããã³ã³ããªã¯ããååšããå ŽåãVersion.GetConflicts()
ã¡ãœããã¯ã¿ãŒã²ãã ããŒãžã§ã³ãšã® Conflict
ã®ãªã¹ããè¿ããŸããConflict
ã¯ã©ã¹ã«ã¯ãã³ã³ããªã¯ã ã¿ã€ããååŸã®è¡ã®å€ãªã©ãè¡ã® ObjectId ã«ãã 2 ã€ã®ããŒãžã§ã³ã®éãã«é¢ããæ
å ±ãå«ãŸããŠããŸãã
çŸåšã®ãšããã
Version.GetConflicts()
ã¡ãœããã¯ãã©ã³ã ããŒãžã§ã³ã®ããŒã¿ ã¹ãã¢ããã®ç«¶åããµããŒãããŠããŸãã
å±¥æŽç®¡çã¯ããžãªããŒã¿ããŒã¹å ã®ãã¹ãŠã®ããŒã¿ãŸãã¯äžéšã®ããŒã¿ã«å ããããå€æŽãèšé²ããã¢ã¯ã»ã¹ããããã®æ©èœãæäŸããŸããå±¥æŽç®¡çã¯ãæéã®çµéã«äŒŽãããŒã¿ã®å€åãæãã管çããåæããããã®ã¡ã«ããºã ã§ãã
çµç¹ã¯ã以äžã®ãããªäžè¬çãªè³ªåã«çããããã«ãããŒã¿ã«å ããããå€æŽãä¿åããå¿ èŠããããŸãã
- ããæç¹ã§ã®ç¹å®ã®å±æ§ã®å€ã¯äœã ã£ãã®ãïŒ
- ç¹å®ã®ãã£ãŒãã£ãè¡ã¯æéã®çµéãšãšãã«ã©ã®ããã«å€åããã®ãïŒ
- ãã空éé åã¯æéãšãšãã«ã©ã®ããã«å€åããã®ãïŒ
å±¥æŽç®¡çã¯ãããŒã¿ã®å€åãä¿åããããšã§ããã®ãããªè³ªåãžã®åçãæ¯æŽããŸããå±¥æŽç®¡çã¯ãå±¥æŽç®¡çãæå¹ã«ãªã£ãç¬éããç¡å¹ã«ãªããŸã§ãããŒã¿ã»ããã®å€æŽãç¶æãããšããããšãç解ããããšãéèŠã§ãã
ããŒã¿ã»ããäžã®å±¥æŽç®¡çã®æå¹åãšç¡å¹åã¯ãPython ãŸãã¯ãžãªããã»ã·ã³ã°ããŒã«ã«ãã£ãŠè¡ãããŸãããžãªããŒã¿ããŒã¹ API ã®2ã€ã®ã«ãŒãã³ãå±¥æŽç®¡çãžã®ã¢ã¯ã»ã¹ãæäŸããŸãã
-
Table.IsArchiveEnabled()
ã¯ãããŒãã«ã§å±¥æŽç®¡çãæå¹ã«ãªã£ãŠããå Žåã« true ãè¿ããŸãã - æå¹ãªå Žåã¯ã
Table.GetArchiveTable()
ã䜿çšããŠå®éã®å±¥æŽç®¡çããŒãã«ãè¿ãããšãã§ããŸãã
äžèšã®ããã«åã
ã®å±¥æŽç®¡çããŒãã«ã衚瀺ããããšãã§ããŸãããVersionManager ã¯ã©ã¹ã®ã«ãŒãã³ã䜿çšããŠå±¥æŽããŒãžã§ã³ã«æ¥ç¶ããæ¹ãç°¡åãªå Žåãå€ãã§ããå±¥æŽããŒãžã§ã³ã¯ããžãªããŒã¿ããŒã¹å
ã®ãã¹ãŠã®å±¥æŽç®¡çãããããŒã¿ã»ãããç¹å®ã®æéã«ã©ã®ãããªç¶æ
ã§ãã£ããã瀺ãèªã¿åãå°çšã®è¡šçŸãæäŸããŸããå±¥æŽããŒãžã§ã³ã¯ãæ¥ä»ãšæå»ããŸãã¯ååä»ãã®å±¥æŽããŒã«ãŒã䜿çšããŠã¢ã¯ã»ã¹ã§ããŸããå±¥æŽããŒã«ãŒãšã¯ãååãä»ããããç¹å®ã®æ¥æã®ããšã§ããããšãã°ããTwin Pines Mall safety incidentããšããååã®å±¥æŽããŒã«ãŒã¯ã1985幎10æ26æ¥ã®åå1æ15åãšããæ¥æãåç
§ããŠããŸããå±¥æŽããŒã«ãŒã®äœæã«ã¯ãCreateHistoricalVersion
ã¡ãœããã䜿çšããŸãã
HistoricalVersion historicalVersion = versionManager.CreateHistoricalVersion(new HistoricalVersionDescription("Historical marker snapshot at the moment", DateTime.Now));
ã¿ã€ã ã¹ã¿ã³ãã¯åå±¥æŽããŒãžã§ã³ã§äžæã§ãªããã°ãªããŸãããå±¥æŽããŒãžã§ã³ã¯ãã¿ã€ã ã¹ã¿ã³ããããŒãšããŠãã£ãã·ã¥ãããŸãã
GetCurrentHistoricalVersion
ã¡ãœããã¯ãçŸåšéžæãããŠããå±¥æŽããŒãžã§ã³ãè¿ããŸããGetHistoricalVersion
ã¯ãæ¥æãŸãã¯å±¥æŽããŒã«ãŒåã®ããããããå±¥æŽããŒãžã§ã³ãªããžã§ã¯ããååŸããŸãããžãªããŒã¿ããŒã¹äžã®ãã¹ãŠã®å±¥æŽããŒã«ãŒã®ãªã¹ããååŸããã«ã¯ãGetHistoricalVersions
ã¡ãœããã䜿çšã§ããŸããHistoricalVersion](https://pro.arcgis.com/en/pro-app/latest/sdk/api-reference/topic7499.html) ãªããžã§ã¯ããååŸãããã[
Connect` ã¡ãœããã¯ãã®ç¹å®ã®æç¹ã®ãžãªããŒã¿ããŒã¹æ¥ç¶ãè¿ããŸãã
using (Geodatabase geodatabase = new Geodatabase(new DatabaseConnectionFile(new Uri("path\\to\\sde\\file\\sdefile.sde"))))
using (VersionManager versionManager = geodatabase.GetVersionManager())
{
if (versionManager.GetCurrentVersionBaseType() == VersionBaseType.HistoricalVersion)
{
HistoricalVersion historicalVersion = versionManager.GetCurrentHistoricalVersion();
using (Geodatabase historicalGeodatabase = historicalVersion.Connect())
{
//
}
}
}
RelationshipClass ã§ã¯ä»¥äžã®æäœãè¡ãããšãã§ããŸãã
-
ãªã¬ãŒã·ã§ã³ã·ããã®äœæ - ãªã¬ãŒã·ã§ã³ã·ãããäœæããã«ã¯ãRelationshipClass ãªããžã§ã¯ãã® CreateRelationship ã¡ãœããã«ãé¢é£å ã¯ã©ã¹ã®è¡ãšé¢é£å ã¯ã©ã¹ã®è¡ãžã®åç §ãæž¡ãå¿ èŠããããŸããCreateRelationship ãæåŸ éãã«æ©èœããããã«ã¯ãé¢é£å ã¯ã©ã¹ã®äž»ããŒã®å€ïŒããã³åž°å±ãããªã¬ãŒã·ã§ã³ã·ããã¯ã©ã¹ã®é¢é£å ã¯ã©ã¹ã®äž»ããŒã®å€ïŒãèšå®ãããŠããå¿ èŠãããããšã«æ³šæããŠãã ãããäŸãšããŠã¯ããªã¬ãŒã·ã§ã³ã·ããã®äœæ ãåç §ããŠãã ãããå±æ§ä»ãã®ãªã¬ãŒã·ã§ã³ã·ããã¯ã©ã¹ã®å Žåã第3åŒæ°ã« RowBuffer ãæž¡ããŠå±æ§ãè¿œå ããããšãã§ããŸãïŒããã¯ãªãã·ã§ã³ã®ãã©ã¡ãŒã¿ã§ãïŒãRowBuffer ã¯ã AttributedRelationshipClass ãªããžã§ã¯ãã® CreateRowBuffer ãåŒã³åºãããšã§ååŸã§ããŸãã
-
ãªã¬ãŒã·ã§ã³ã·ããã®åé€ - ãªã¬ãŒã·ã§ã³ã·ããã®äœæãšåæ§ã«ããªã¬ãŒã·ã§ã³ã·ãããåé€ããéã«ã¯ãé¢é£å ã®è¡ãšé¢é£å ã®è¡ãžã®åç §ã RelationshipClass ã® DeleteRelationship ã¡ãœããã«æž¡ãå¿ èŠããããŸããäŸã¯ããªã¬ãŒã·ã§ã³ã·ããã®åé€ ãåç §ããŠãã ããã
-
æå®ããã RelationshipClass ã«ãã£ãŠé¢é£ä»ããããè¡ã®æ€çŽ¢ - é¢é£å ã®ã¯ã©ã¹ãŸãã¯é¢é£å ã®ã¯ã©ã¹ã®ãªããžã§ã¯ã ID ã®ãªã¹ããäžãããããšãGetRowsRelatedToOriginRowsãŸã㯠GetRowsRelatedToDestinationRows ã¯ãããããæž¡ããããªããžã§ã¯ã ID ã«é¢é£ãã察å¿ããè¡ãªããžã§ã¯ããæäŸããŸããäŸã¯ãRelationshipClass ã«ãã£ãŠé¢é£ä»ããããè¡ã®ååŸ ãåç §ããŠãã ããã
æ·»ä»ãã¡ã€ã«ã¯ãåã ã®ãã£ãŒãã£ã«ãã¡ã€ã«ãè¿œå ããããã®ãã®ã§ãç»åãPDFãããã¹ãææžãªã©ãããŸããŸãªçš®é¡ã®ãã¡ã€ã«ãè¿œå ã§ããŸããäŸãã°ã建ç©ãè¡šããã£ãŒãã£ãããå Žåãæ·»ä»ãã¡ã€ã«ã䜿ã£ãŠã建ç©ãæ§ã ãªè§åºŠããæ®åœ±ããè€æ°ã®åçãã建ç©ã®æš©å©æžãçšåæ å ±ãå«ã PDF ãã¡ã€ã«ãè¿œå ããããšãã§ããŸãã
æ·»ä»ãã¡ã€ã«ãè¿œå ããã«ã¯ããŸãããã£ãŒãã£ã¯ã©ã¹ãŸãã¯ããŒãã«ã®æ·»ä»ãã¡ã€ã«ãæå¹ã«ããå¿ èŠããããŸããæ·»ä»ãã¡ã€ã«ãæå¹ã«ãããšãæ·»ä»ãã¡ã€ã«ãæ ŒçŽããããã®æ°ããããŒãã«ãäœæããããã£ãŒãã£ãšæ·»ä»ãã¡ã€ã«ãé¢é£ä»ããããã®æ°ãããªã¬ãŒã·ã§ã³ã·ããã¯ã©ã¹ãäœæãããŸãã
ArcGIS.Core.Data API 㯠DML ã®ã¿ã® API ã§ãããããããã°ã©ã ã§æ·»ä»ãã¡ã€ã«ãæå¹ã«ããã«ã¯ãGeoprocessing API ã䜿çšããæ¹æ³ããããŸãã
IReadOnlyList<string> parameters = Geoprocessing.MakeValueArray("path\\to\\sde\\connection.sde\\FeatureClassName");
IGPResult gpResult = await Geoprocessing.ExecuteToolAsync("management.EnableAttachments", parameters);
ããŒãã«ããã£ãŒãã£ã¯ã©ã¹ãæ·»ä»ãã¡ã€ã«ãæå¹ã«ããŠãããã©ããã®å€æã¯ãTable ã FeatureClass ãªããžã§ã¯ãã® IsAttachmentEnabled ããããã£ã䜿ã£ãŠè¡ãããšãã§ããŸãã
æ·»ä»ãã¡ã€ã«ãè¿œå ããã«ã¯ãAttachment constructor ã䜿çšããŠæ°ããæ·»ä»ãã¡ã€ã« ãªããžã§ã¯ããäœæããŸããNameãContentTypeãData ã¯æ°ããæ·»ä»ãã¡ã€ã«ã®ã¡ãœããã䜿ã£ãŠååŸãèšå®ã§ããŸãããã¹ãŠã®æ å ±ãèšå®ãããããæ°ããäœæãããAttachment ãªããžã§ã¯ãã䜿ã£ãŠãRow ã® AddAttachment ã¡ãœãããåŒã³åºããæ·»ä»ãã¡ã€ã«ãè¿œå ããŸããæ·»ä»ãã¡ã€ã«ã®è¿œå ã®äŸã¯ãã¢ã¿ããã¡ã³ãã®è¿œå ã«èšèŒãããŠããŸãã
æ·»ä»ãã¡ã€ã«ã«ããŒã¿ãèšå®ããã«ã¯ããã£ã¹ã¯äžã®ãã¡ã€ã«ããã¡ã¢ãªã¹ããªãŒã ãäœæããå¿ èŠããããŸãããã®æ¹æ³ã®1ã€ã¯ããã¡ã€ã«ããã® MemoryStream ã®ååŸ ã«èšèŒãããŠããŸãã
æ·»ä»ãã¡ã€ã«ãååŸããã«ã¯ãRow ã® GetAttachments ã¡ãœããã䜿çšã§ããŸããåŒæ°ãæž¡ãããŠããªãå Žåã¯ããã®è¡ã®ãã¹ãŠã®æ·»ä»ãã¡ã€ã«ãè¿ãããŸãã第1åŒæ°ã«æ·»ä»ãã¡ã€ã«ã® ID ã®ãªã¹ããæž¡ãããå Žåã¯ãID ã«äžèŽããæ·»ä»ãã¡ã€ã«ãè¿ãããŸãã2çªç®ã®åŒæ°ã¯ Boolean ã§ãæ·»ä»ãã¡ã€ã«ã®ããŒã¿ãè¿ããã©ãããæå®ããã®ã«äœ¿ãããŸããæ·»ä»ãã¡ã€ã«ãžã®ã¢ã¯ã»ã¹ã®äŸã«ã€ããŠã¯ãæ·»ä»ãã¡ã€ã«ã®æŽæ° ãåç §ããŠãã ããã
è¡ããã£ãŒãã£ããæ·»ä»ãã¡ã€ã«ãååŸããåŸãæ·»ä»ãã¡ã€ã«ã®ã²ãã¿ãŒãšã»ãã¿ãŒã䜿ã£ãŠãNameãContent TypeãData ãèšå®ããŸãããããŠãæŽæ°ãããæ·»ä»ãã¡ã€ã« ãªããžã§ã¯ãã䜿ã£ãŠãRow ã Feature ã® UpdateAttachment ãåŒã³åºãããšãã§ããŸããæ·»ä»ãã¡ã€ã«ãžã®ã¢ã¯ã»ã¹ã®äŸã«ã€ããŠã¯ãæ·»ä»ãã¡ã€ã«ã®æŽæ° ãåç §ããŠãã ããã
æ·»ä»ãã¡ã€ã«ãåé€ããã«ã¯ããŸãè¡ããæ·»ä»ãã¡ã€ã«ãååŸããRow ãŸãã¯Feature ã«å¯ŸããŠãåé€ãããæ·»ä»ãã¡ã€ã«ã® ID ã®ãªã¹ããæž¡ããŠDeleteAttachments ã䜿çšããå¿ èŠããããŸããæ»ãå€ã¯ã察å¿ããæ·»ä»ãã¡ã€ã«ã®åé€ã«å€±æãããšãã«ã¹ããŒãããäŸå€ã«å¯Ÿããæ·»ä»ãã¡ã€ã«ã® ID ã®ãã£ã¯ã·ã§ããªã§ãããã£ã¯ã·ã§ããªã空ã®å ŽåãèŠæ±ãããæ·»ä»ãã¡ã€ã«ã¯æ£åžžã«åé€ãããããšã«ãªããŸããDeleteAttachments ã«åŒæ°ãæž¡ãããªãå Žåããã®è¡ã®ãã¹ãŠã®æ·»ä»ãã¡ã€ã«ãåé€ãããŸããæ·»ä»ãã¡ã€ã«ã®åé€ã®äŸã«ã€ããŠã¯ãæ·»ä»ãã¡ã€ã«ã®åé€ãåç §ããŠãã ããã
æ¡ä»¶å€ã¯ãããã£ãŒã«ãã®å€ãä»ã®ãã£ãŒã«ãã®å€ã«äŸåããããšãå¯èœã«ããããŒã¿èšèšæ©èœã§ãã
ãã¡ã€ã³ãæã€ãã£ãŒã«ãã¯ããšãã£ã¿ãŒã«æå¹ãªå€ã®ãªã¹ãããéžæããããšãå¶éããŸãããæ¡ä»¶å€ã§ã¯ãããã«äžæ©é²ãã§ãä»ã®ãã£ãŒã«ãã«åºã¥ããŠå€ã®ãªã¹ããå¶éããããšãã§ããŸããããã€ãã®ãã£ãŒã«ãã¯ãã£ãŒã«ã ã°ã«ãŒãã§ãªã³ã¯ãããæ¡ä»¶å€ã®çµã¿åããã¯ãã£ãŒã«ã ã°ã«ãŒãå
ã§å®çŸ©ãããŸããç·šéæã«ã¯ããã¡ã€ã³å€ã®ãªã¹ãå
šäœã衚瀺ãããã®ã§ã¯ãªããæ¡ä»¶å€ã®ã¿ã衚瀺ãããŸãã
ãã®ããã«ãæ¡ä»¶å€ã¯æå¹ãªå
¥åã®æ°ãæžããããã«è¿œå ã®å¶çŽãé©çšããããšã«ãã£ãŠãããŒã¿ã®æŽåæ§ã匷åããã®ã«åœ¹ç«ã¡ãŸãã
Contingency
ã¯ã©ã¹ã® GetContingentValues()
ã¡ãœããã䜿çšããããšã§æ¡ä»¶å€ã«ã¢ã¯ã»ã¹ããããšãã§ããŸãããã®ã¡ãœããã¯ãFieldGroup
åã«ãã ContingentValue
ã®èŸæžãè¿ããŸãã
ContingentValue
ã¯ãFieldGroup ã«å±ãããã£ãŒã«ãã®å¯èœãªå€ãå®çŸ©ããåºæ¬ã¯ã©ã¹ã§ãã
æ¡ä»¶å€ã¯æ¬¡ã®ããããã§ãã
-
ContingentCodedValue
â ã³ãŒãå€ãã¡ã€ã³ã®å€ -
ContingentRangeValue
â æ倧ããã³æå°ç¯å²ãã¡ã€ã³å€ã®å®çŸ© -
ContingentAnyValue
â ãã£ãŒã«ãã®ãã¡ã€ã³ã«å«ãŸããä»»æã®å€ãæå¹ã§ãããšã¿ãªãããããšã瀺ãïŒnull
ãåæ§ïŒ -
ContingentNullValue
ânull
å€ããã£ãŒã«ãã«å¯ŸããŠæå¹ã§ããããšã瀺ã
FieldGroup
ã«ã¯ãæ¡ä»¶å€ããµããŒããããã£ãŒã«ãåãšãã®å¶éãå«ãŸããŸãã
TableDefinition
ãŸã㯠FeatureClassDefinition
ã¯ã©ã¹ã® GetContingencies()
ã¡ãœããã¯ãããŒã¿ã»ããã«é©çšããã Contingency
ã®ãªã¹ããè¿ããŸãã
using (TableDefinition tableDefinition = table.GetDefinition())
{
IReadOnlyList<Contingency> contingencies = tableDefinition.GetContingencies();
foreach (Contingency contingency in contingencies)
{
// Field group
FieldGroup filedGroup = contingency.FieldGroup;
string fieldGroupName = filedGroup.Name;
IReadOnlyList<string> fieldInFieldGroup = filedGroup.FieldNames;
bool isEditRestriction = filedGroup.IsRestrictive;
int contingencyId = contingency.ID;
Subtype subtype = contingency.Subtype;
bool isContingencyRetired = contingency.IsRetired;
// Contingent values
IReadOnlyDictionary<string, ContingentValue> contingentValuesByFieldName = contingency.GetContingentValues();
foreach (KeyValuePair<string, ContingentValue> contingentValueKeyValuePair in contingentValuesByFieldName)
{
string attributeFieldName = contingentValueKeyValuePair.Key;
// Contingent value type associated with the attribute field
ContingentValue contingentValue = contingentValueKeyValuePair.Value;
switch (contingentValue)
{
case ContingentCodedValue contingentCodedValue:
string codedValueDomainName = contingentCodedValue.Name;
object codedValueDomainValue = contingentCodedValue.CodedValue;
break;
case ContingentRangeValue contingentRangeValue:
object rangeDomainMaxValue = contingentRangeValue.Max;
object rangeDomainMinValue = contingentRangeValue.Min;
break;
case ContingentAnyValue contingentAnyValue:
// Any value type
break;
case ContingentNullValue contingentNullValue:
// Null value
break;
}
}
}
}
ããã«ãTable.GetContingentValues
ã¡ãœããã¯ãäžãããã RowBuffer
ãšå±æ§ãã£ãŒã«ãã®æœåšçãªæ¡ä»¶å€ã®ãªã¹ããååŸããŸãã
using (RowBuffer rowBuffer = parcels.CreateRowBuffer())
{
IReadOnlyDictionary<FieldGroup, IReadOnlyList<ContingentValue>> possibleZonings = parcels.GetContingentValues(rowBuffer, "Zone");
IEnumerable<FieldGroup> possibleFieldGroups = possibleZonings.Keys;
foreach (FieldGroup possibleFieldGroup in possibleFieldGroups)
{
IReadOnlyList<ContingentValue> possibleZoningValues = possibleZonings[possibleFieldGroup];
}
}
[Table.ValidateContingencies] ã¡ãœããã¯ãè¡ãæ¡ä»¶å€ã«å¯ŸããŠæ€èšŒããContingencyValidationResult
ãè¿ããŸãããã®çµæã«ã¯ãäžèŽãã (æå¹ãª) æ¡ä»¶ããã³åãã (ç¡å¹ãª) æ¡ä»¶ã«é¢ããæ
å ±ãå«ãŸããŸãã
using (RowBuffer rowBuffer = parcels.CreateRowBuffer())
{
// Insert values in a row buffer
rowBuffer["Zone"] = "Business";
rowBuffer["TaxCode"] = "TaxB";
// Validate contingency values of the parcels' row
ContingencyValidationResult contingencyValidationResult = parcels.ValidateContingencies(rowBuffer);
// Valid contingencies
IReadOnlyList<Contingency> matchedContingencies = contingencyValidationResult.Matches;
if (matchedContingencies.Count > 0)
{
// Create a row with valid contingency values
parcels.CreateRow(rowBuffer);
}
// Invalid contingencies
IReadOnlyList<ContingencyViolation> violatedContingencies = contingencyValidationResult.Violations;
foreach (ContingencyViolation contingencyViolation in violatedContingencies)
{
ContingencyViolationType violationType = contingencyViolation.Type;
Contingency violatedContingency = contingencyViolation.Contingency;
}
}
Contingency
ã¯å»æ¢ããããšãã§ããŸããå»æ¢ããããšãæ¢åã®ããŒã¿ã«ã¯æ®ããŸãããç·šéã«ã¯å©çšã§ããªããªããŸãã
å±æ§ã«ãŒã« ã¯ããžãªããŒã¿ããŒã¹ã®ããŒã¿ã»ããã®ç·šéäœæ¥ãæ¹åããããŒã¿ã®æŽåæ§ãé«ãããã®ã§ããå±æ§ã«ãŒã«ã¯ãå±æ§ãèªåçã«å ¥åããããç·šéæäœäžã«ç¡å¹ãªç·šéãå¶éããããæ¢åã®ãã£ãŒãã£ã®æŽåãã§ãã¯ãè¡ãããã«äœ¿çšã§ããããŠãŒã¶å®çŸ©ã®ã«ãŒã«ã§ãããžãªããŒã¿ããŒã¹ã¯ãå±æ§ãèªåçã«å ¥åããèšç®ã«ãŒã«ãããŒã¿ã®å質ãä¿èšŒããå¶çŽã«ãŒã«ãæ¢åãã£ãŒãã£ã確èªããæ€èšŒã«ãŒã«ããµããŒãããŠããŸãã
ãžãªããŒã¿ããŒã¹ãå±æ§ã«ãŒã«ããµããŒãããŠãããã©ããã調ã¹ãã«ã¯ãGeodatabase
ã¯ã©ã¹ã® IsAttributeRuleSupported()
ã¡ãœããã䜿çšããŸãã
å±æ§ã«ãŒã«ã¯ãžãªããŒã¿ããŒã¹ã®ãã£ãŒãã£ã¯ã©ã¹ãŸãã¯ããŒãã«ã®ããããã£ãšããŠäœæãããŸãããã®ãããããŒã¿ã»ããã®å±æ§ã«ãŒã«ã¯ TableDefinition
ã® GetAttributeRules ã¡ãœããã䜿çšããŠååŸã§ããŸããããã¯ãAttributeRuleDefinition ãªããžã§ã¯ãã®èªã¿åãå°çšãªã¹ããè¿ããŸããããŒã¿ã»ããã®ãã¹ãŠã®å±æ§ã«ãŒã«ãååŸããããšãã§ããŸãããç¹å®ã®ã«ãŒã« ã¿ã€ãïŒèšç®ãå¶çŽãæŽåãã§ãã¯ïŒã®å±æ§ã«ãŒã«ãååŸããããšãã§ããŸããå±æ§ã«ãŒã«ãååŸãããããã®ããããã£ã調ã¹ãããšãã§ããŸãã
å±æ§ã«ãŒã«ã«ã¯ãGetNameã¡ãœãããšGetDescriptionã¡ãœããã䜿çšããŠååŸããååãšèª¬æããããŸããGetAttributeRuleTypeã䜿çšããŠãAttributeRuleTypeã決å®ããŸããã«ãŒã«ã®è©³çŽ°ã¯ãGetScriptExpressionã§ååŸã§ããã¹ã¯ãªããåŒã§å®çŸ©ãããGetTriggeringEventsã調ã¹ãããšã§ãã©ã®ã€ãã³ããã«ãŒã«ãããªã¬ãŒããããå€æã§ããŸããã«ãŒã«ãäœæãããææã«ãã£ãŠã¯ãã«ãŒã«ã®å®è¡ãŸãã¯è©äŸ¡ã«å¿ èŠãª Arcade ã®æå°ããŒãžã§ã³ã確èªããããšã圹ç«ã¡ãŸãã ãã®æ å ±ãååŸããã«ã¯ãGetMinimumArcadeVersion ã䜿çšããŸãã
å±æ§ã«ãŒã«ã®äœææã«ããšã©ãŒçªå·ããšã©ãŒã¡ãã»ãŒãžãé倧床ãå®çŸ©ããããšãã§ããŸãã GetErrorNumberãGetErrorMessageãGetSeverity ã¡ãœããã䜿çšããŠãããããååŸããããšãã§ããŸããè©äŸ¡ã«é¢ããã¹ããŒã¿ã¹ ããããã£ã¯ãGetIsBatchãGetIsEnabledãGetExcludeFromClientEvaluation ã䜿çšããŠååŸã§ããŸãã
Pro SDK ã¯ãæŽåãã§ã㯠ã«ãŒã«ãšãããèšç®ã«ãŒã«ãå®è¡ããã«ãŒãã³ãæäŸããŸãããããã®å±æ§ã«ãŒã«ãå®è¡ããããã®ã¯ã©ã¹ã以äžã®å³ã«ç€ºããŸãã詳现ã«ã€ããŠã¯ããã®åŸã®ããã¥ã¡ã³ãã®ã»ã¯ã·ã§ã³ã§èª¬æããŸãã
Pro SDK ã§å±æ§ã«ãŒã«ãæ±ãããã®äžå¿ãšãªãã¯ã©ã¹ã¯ AttributeRuleManager
ã¯ã©ã¹ã§ãã ãã®ãªããžã§ã¯ãã¯ãGeodatabase
ã¯ã©ã¹ã®GetAttributeRuleManager()
ã¡ãœãããåŒã³åºãããšã§ååŸã§ããŸãã ãžãªããŒã¿ããŒã¹ãå±æ§ã«ãŒã«ããµããŒãããŠãããã©ããã¯ããŸãäžè¿°ã®IsAttributeRuleSupported()
ã¡ãœããããã§ãã¯ããå¿
èŠããããŸãã
å±æ§ã«ãŒã«ã«ã¯ããã€ãã®çš®é¡ããããŸãã å³æèšç®ãšå¶çŽã«ãŒã«ã¯ãè€æ°ã®ãžãªããŒã¿ããŒã¹ã¿ã€ãã§ãµããŒããããŠãããè¡ã®äœæãæŽæ°ãåé€ã®éã«èªåçã«çºè¡ãããŸãã
äžéšã®ãžãªããŒã¿ããŒã¹ã§ã¯ããããèšç®ããã³æ€èšŒã«ãŒã«ããµããŒããããŠããŸãããããã®ã«ãŒã«ã¯ãAttributeRuleManager
ã¯ã©ã¹ã® EvaluateInEditOperation()
æ¡åŒµã¡ãœãã ãåŒã³åºãããšã§å®è¡ãããŸããããŒã¿ããŒã¹ãè©äŸ¡ããµããŒãããŠãããã©ãããå€æããããã«ã¯ãäºåã« IsEvaluationSupported()
ã¡ãœãããåŒã³åºãå¿
èŠããããŸãã
å±æ§ã«ãŒã«ãå®è¡ããã«ã¯ãEvaluateInEditOperation()
ã¡ãœããã䜿çšããŸãã EvaluateInEditOperation()
ã®åŒã³åºãã«æž¡ããããã©ã¡ãŒã¿ã¯ãAttributeRuleEvaluationDescription
ã¯ã©ã¹ ã«ãã£ãŠæå®ãããŸãã ãµããŒããããŠããçµã¿åããã¯ãéãããæ°ã®ã³ã³ã¹ãã©ã¯ã¿ã䜿çšããŠé©çšãããŸãã
ãããã㣠| 説æ |
---|---|
AttributeRuleType |
AttributeRuleType ãã©ã¡ãŒã¿ã¯ããããèšç®ã«ãŒã«ãæ€èšŒã«ãŒã«ããŸãã¯ãã®äž¡æ¹ãå®è¡ããããã«äœ¿çšã§ããŸãã |
Extent | ãšã¯ã¹ãã³ã ãã©ã¡ãŒã¿ã¯ãã©ã®ãã£ãŒãã£ãè©äŸ¡ããããå¶åŸ¡ããããã«äœ¿çšãããŸããèŠã€ãããªãå Žåã¯ããšã¯ã¹ãã³ãå šäœãè©äŸ¡ãããŸãã |
Selections | è©äŸ¡ããæ©èœãæå®ããã1ã€ä»¥äžã®éžæé ç®ã®ãªã¹ãã§ããæ¢å®å€ã¯ç©ºã®ãªã¹ãã§ãã |
VersionEvaluationScope |
VersionEvaluationScope ãã©ã¡ãŒã¿ã§ã¯ãããŒãžã§ã³å
ã®å
šãŠã®è¡ãè©äŸ¡ãããããããã¯ãã®ããŒãžã§ã³å
ã§å€æŽãããè¡ã®ã¿ãè©äŸ¡ããããæå®ããŸãã |
EvaluateInEditOperation()
ã¡ãœããã¯ãAttributeRuleEvaluationResult
ãªããžã§ã¯ããè¿ããæ€åºããããšã©ãŒã®æ°ãå€å¥ããããã«äœ¿çšãããŸãã
ãã£ãŒã㣠ãµãŒãã¹ã§åŒã³åºããããšãEvaluateInEditOperation()
ã¡ãœããã¯REST ãšã³ããã€ã³ããžã®åŒã³åºããè¡ããåæããŠå®è¡ãããŸãããã®ã«ãŒãã³ã¯åŠçã®ãªãŒããŒããããå°ãªãã§ããæ®å¿µãªãããåŠçã«æéããããããããšãµãŒããŒã®ã¿ã€ã ã¢ãŠãã®åœ±é¿ãåãããããªããŸãããã®åé¡ãåé¿ããããã«ãEvaluate REST ãšã³ããã€ã³ãã¯ãã®ã«ãŒãã³ã®éåæããŒãžã§ã³ãæäŸããŠããŸããåŠçã¯ãæ€èšŒãµãŒããŒãããžãªããã»ã·ã³ã° ãµãŒããŒã«ãªãããŒããããŸããããã«ããããã©ãŒãã³ã¹ãäœäžããŸããããžãªããã»ã·ã³ã° ãµãŒãã¯é·æéå®è¡ããããžã§ããåŠçããããã«èšèšãããŠãããã¿ã€ã ã¢ãŠãã®åœ±é¿ãåããŸããããã®ãµãŒãã¹ã§ã¯ãæäœãå®äºãããŸã§ ArcGIS Pro ããµãŒãã¹ãããŒãªã³ã°ããŸããå€ãã®è©äŸ¡ã³ãŒã«ã¯å€æ°ã®ãã£ãŒãã£ã«å¯ŸããŠå®è¡ããããããéåæããŒãžã§ã³ãããã©ã«ããšãªã£ãŠããŸãã
AttributeRuleEvaluationDescription
ã® ServiceSynchronizationType
ãã©ã¡ãŒã¿ã¯ãã©ã®ããŒãžã§ã³ã®ãµãŒãã¹ãåŒã³åºãããå¶åŸ¡ã§ããŸããããã«ã¯2ã€ã®å€ãæã€ServiceSynchronizationType
åæåã䜿çšããŸããSynchronous
ãš Asynchronous
ã§ããããã§éèŠãªã®ã¯ãC# éçºè
ã®èŠç¹ããèŠããšããã®ãã©ã¡ãŒã¿ã«é¢ãããããã®ã«ãŒãã³ã¯ åæ C# ã¡ãœããã§ãããšããããšã§ããAPI ã®ä»ã®ã¡ãœãããšåæ§ã«ãæäœãå®äºãããŸã§çŸåšã®ã¹ã¬ããããããã¯ããŸãã
CoreHost ã¢ããªã±ãŒã·ã§ã³ãæžãå Žåã¯ã
AttributeRuleManager
ã¯ã©ã¹ã®Evaluate()
ããŒã¹ã¡ãœããã䜿çšããŠãã ããããã®ã«ãŒãã³ã¯ç¬èªã®ãã©ã³ã¶ã¯ã·ã§ã³ç®¡çãè¡ãããïŒGeodatabase.ApplyEdits()
ã§äœæãããç·šéæäœã®å éšã§ã¯çºè¡ã§ããŸããã
å±æ§ã«ãŒã«ã®æ€èšŒã«å€±æãããšããšã©ãŒãäžé£ã®ãšã©ãŒããŒãã«ã«æžã蟌ãŸããŸããåæ§ã«ããããèšç®ã«ãŒã«ã®å®è¡ã§åé¡ãçºçããå Žåãããããã®ããŒãã«ã«ãšã©ãŒãæžã蟌ãŸããŸãã䜿çšããããšã©ãŒ ããŒãã«ã¯ããœãŒã¹ã®ãã£ãŒãã£ã¯ã©ã¹ãŸãã¯ããŒãã«ã®ãžãªã¡ããªã«å¿ããŠ4ã€ãããŸãããããã®ãšã©ãŒããŒãã«ã¯ Pro ã®ãŠãŒã¶ãŒã€ã³ã¿ãŒãã§ãŒã¹ã§èŠãããšãã§ããPro SDK ã§ã AttributeRuleManager
ã® GetErrorTable()
ã¡ãœããã§ã¢ã¯ã»ã¹ããããšãã§ããŸãããããã®ããŒãã«ã¯ååŸåŸãä»ã®ãžãªããŒã¿ããŒã¹ã®ããŒãã«ãšåæ§ã«èªã¿èŸŒãã ãã¯ãšãªããããšãã§ããŸãããããã®ããŒãã«ã®åè¡ã¯ãšã©ãŒãè¡šããŠããŸãã
CreateAttributeRuleError()
ã«ãŒãã³ã¯ããšã©ãŒããŒãã«ã®1ã€ããè¡ãåããããã䜿ã£ãŠ AttributeRuleError
ãªããžã§ã¯ããçæããŸãããã®ãªããžã§ã¯ãã¯ããŒãã«ããããŠãŒã¶ãŒãã¬ã³ããªãŒã«è¡šç€ºããŸããæ©èœçã«éèŠãªã®ã¯ããã®ãªããžã§ã¯ãã䜿ã£ãŠããšã©ãŒã®åå ãšãªã£ããã£ãŒãã£ãåãåºãããšãã§ããããšã§ããOriginClass
ããããã£ã¯ããŒãã«ãŸãã¯ãã£ãŒãã£ã®ã¯ã©ã¹åãè¿ããŸãããã㯠Geodatabase.OpenDataset()
ã䜿ã£ãŠããŒãã«ãéãã®ã«äœ¿çšã§ããŸãã AttributeRuleError
ã¯ã©ã¹ã® OriginGlobalID
ãŸã㯠OriginObjectID
ããããã£ã䜿çšãããšããšã©ãŒã®åå ãšãªã£ãç¹å®ã®è¡ãååŸããããšãã§ããŸãã
å±æ§ã«ãŒã«ã®ãšã©ãŒããŒãã«ã¯ãã»ãšãã©ã®å Žåãèªã¿åãå°çšã§ãã æ€èšŒã«å€±æãããã£ãŒãã£ã«å¯Ÿã㊠EvaluateInEditOperation()
ãå®è¡ããããšã«ãã£ãŠã®ã¿ãæ°ããè¡ãäœæããããšãã§ããŸããè¡ãåé€ããã«ã¯ããšã©ãŒã®åå ãšãªã£ãæ ¹æ¬çãªåé¡ã解決ããEvaluateInEditOperation()
ãå床å®è¡ããå¿
èŠããããŸãããããã®ããŒãã«ã«ã§ããå¯äžã®æŽæ°ã¯ããšã©ãŒã äŸå€ ãšããŠããŒã¯ããããšã§ããããã¯ããã®ãšã©ãŒãäŸå€çãªã±ãŒã¹ã§ããããšã©ãŒãšããŠæ±ãã¹ãã§ã¯ãªãããšãã·ã¹ãã ã«ç€ºãããã«äœ¿çšãããŸãããšã©ãŒãäŸå€ãšããŠããŒã¯ããã«ã¯ãAttributeRuleError
ã¯ã©ã¹ã® IsException
ããããã£ãèšå®ããŠããã®ãªã¹ãã AttributeRuleManager
ã® UpdateErrorsInEditOperation()
ãšã¯ã¹ãã³ã·ã§ã³ã¡ãœããã«æž¡ããŸãã
CoreHost ã¢ããªã±ãŒã·ã§ã³ãæžãå Žåã¯ã
AttributeRuleManager
ã¯ã©ã¹ã®UpdateErrors()
ããŒã¹ã¡ãœããã䜿çšããŠãã ããããã®ã«ãŒãã³ã¯ç¬èªã®ãã©ã³ã¶ã¯ã·ã§ã³ç®¡çãè¡ãã®ã§ãGeodatabase.ApplyEdits()
ã§äœæãããç·šéæäœã®äžã§ã¯çºè¡ã§ããŸããã
ArcGIS.Core.Data API ã¯ãè€æ°ã®ç·šéã1ã€ã®ãã©ã³ã¶ã¯ã·ã§ã³ãšããŠå®è¡ããããšããµããŒãããŠããŸãïŒãã³ã°ãã©ã³ã¶ã¯ã·ã§ã³ãšãåŒã°ããŸãïŒããã©ã³ã¶ã¯ã·ã§ã³ã§ã®ç·šéã«ã¯ã以äžã®2ã€ã®ã¢ãŒãããããŸãã
- ã¢ãã€ã³ ã¢ãŒãã§ã®ç·šé
- ã¹ã¿ã³ãã¢ãã³ ã¢ãŒãã§ã®ç·šé
ããã¯ãArcGIS Pro ã®ã¢ãã€ã³ããªãŒãµãªã³ã°ããéã«ãã©ã³ã¶ã¯ã·ã§ã³ã§ç·šéãå®è¡ããéåžžã®ã¢ãŒãã§ããEditOperation ã¯ã©ã¹ã¯ãArcGIS Pro ã§ã®ãã©ã³ã¶ã¯ã·ã§ã³å ã®ç·šéã®ãµããŒããæäŸããŸãã詳现ã«ã€ããŠã¯ãArcGIS Pro ProConcepts Editing ããã¥ã¡ã³ãã® é«åºŠãªç·šé ãåç §ããŠãã ããã
ArcGIS.Core API ã ArcGIS.CoreHost API ãµããŒãã䜿çšã㊠ArcGIS Pro ã®å€éšïŒã³ã³ãœãŒã« ã¢ããªã±ãŒã·ã§ã³ãªã©ïŒã§äœ¿çšãããå Žåããããã¹ã¿ã³ãã¢ãã³ ã¢ãŒããšåŒã³ãŸãããã®ã¢ãŒãã§ã¯ããã©ã³ã¶ã¯ã·ã§ã³ã§ç·šéãå®è¡ããå ŽåãArcGIS.Core.Data.Geodatabase.ApplyEdits ã¡ãœããã䜿çšããå¿ èŠããããŸãã
geodatabase.ApplyEdits(() =>
{
using (RowBuffer rowBuffer = citiesTable.CreateRowBuffer())
{
rowBuffer["State"] = "Colorado";
rowBuffer["Name"] = "Fort Collins";
rowBuffer["Population"] = 167830;
citiesTable.CreateRow(rowBuffer).Dispose();
rowBuffer["Name"] = "Denver";
rowBuffer["Population"] = 727211;
citiesTable.CreateRow(rowBuffer).Dispose();
// etc.
}
});
äžã®äŸã§ç€ºããããã«ãApplyEdits
ã¡ãœãã㯠Action ããªã²ãŒããåãåããŸããAction ããªã²ãŒãã¯ããã©ã³ã¶ã¯ã·ã§ã³å
ã§å®è¡ããªããã°ãªããªããã¹ãŠã®ç·šéãã«ãã»ã«åããŸãããã©ã³ã¶ã¯ã·ã§ã³ã¯ãAction ããªã²ãŒãã®å®è¡äžã«ã¹ããŒãããäŸå€ããªãå Žåã«ã®ã¿ã³ããããããŸããå®è¡äžã«åŠçãããªãäŸå€ãçºçããå Žåã¯ããããŸã§ã«è¡ããããã¹ãŠã®ç·šéãããŒã«ããã¯ããããã©ã³ã¶ã¯ã·ã§ã³ã¯äžæ¢ãããŸãã
Enterprise ãžãªããŒã¿ããŒã¹ã¯ãããã©ã«ãã§ããŒãžã§ã³ç®¡çãããç·šéã»ãã·ã§ã³ã䜿çšããããã«èªåçã«èšå®ãããŸããããŒãžã§ã³ç®¡çãããŠããªãããŒã¿ãç·šéãããå Žåã¯ãããŒãžã§ã³ç®¡çãããŠããªãç·šéã»ãã·ã§ã³ã䜿çšããããšã瀺ãè¿œå ã®Boolean ãã©ã¡ãŒã¿ãæ〠ApplyEdits
ãªãŒããŒããŒãã䜿çšããå¿
èŠããããŸãã
// The non-versioned edit of States feature class that participates in a composite relationship
geodatabase.ApplyEdits(() =>
{
using (Table table = geodatabase.OpenDataset<FeatureClass>("States"))
{
using (RowCursor cursor = table.Search(queryFilter, false))
{
if (cursor.MoveNext())
{
using (Feature feature = (Feature)cursor.Current)
{
feature["Name"] = "CA";
feature.Store();
}
}
}
}
}, false);
1ã€ã®ç·šéã»ãã·ã§ã³ã§ãããŒãžã§ã³ç®¡çãããããŒã¿ãšããŒãžã§ã³ç®¡çãããŠããªãããŒã¿ã®äž¡æ¹ã«å¯Ÿããç·šéãæ··åšãããããšã¯æšå¥šãããŸããã
EditOperation.ExecuteAsync ãš Geodatabase.ApplyEdits ã®åäœã®éãã以äžã«ç€ºããŸãã
- ApplyEdits ã¡ãœããã¯ãåäžã®ãžãªããŒã¿ããŒã¹å ã®ç·šéã«ã®ã¿äœ¿çšã§ããŸãããEditOperation ã® ExecuteAsync ã¯ãè€æ°ã®ãžãªããŒã¿ããŒã¹ãžã®ç·šéã®ã€ã³ã¿ãŒãªãŒããå¯èœã«ããŸãã
- ExecuteAsync ãšã¯ç°ãªããApplyEdits 㯠Undo/Redo æ©èœããµããŒãããŸããã
- ExecuteAsync ã¯ãç·šéã»ãã·ã§ã³ãçµäºããããã« SaveEdits ãŸã㯠DiscardEdits åŒã³åºããå¿ èŠãšããŸãããApplyEdits ã¯ãç·šéã»ãã·ã§ã³ãšç·šéæäœã®äž¡æ¹ãæé»çã«çµäºããŸãã
- ApplyEdits ã¯ããããã®æŽæ°ããµããŒãããŸããã
ApplyEdits ã¯ãArcGIS Pro ã®å€éšã§ã®ç·šéãç®çãšããŠããããšã«æ³šæããŠãã ãããã¢ãã€ã³ã§ã®ãã¹ãŠã®ç·šéã«ã¯ãEditOperation ã䜿çšããå¿ èŠããããŸãã
ã¹ã¿ã³ãã¢ãã³ã® CoreHost ã¢ããªã±ãŒã·ã§ã³ã§å€§éã®è¡ãæ¿å ¥ããå Žåã¯ãInsertCursor ã¯ã©ã¹ã䜿çšããŠãã ãããããã¯ãäžèšã®ææ³ãšåç以äžã®ããã©ãŒãã³ã¹ãä¿èšŒãããŠããŸãã䜿çšãããã£ãŒãã£ã¯ã©ã¹ãããŒãã«ã®çš®é¡ã«ãã£ãŠã¯ãäœåãéããªãå¯èœæ§ããããŸããéããªããªãããŒãã«ã®äŸãšããŠã¯ãã¢ãããŒã·ã§ã³ããã£ã¡ã³ã·ã§ã³ã®ãã£ãŒãã£ã¯ã©ã¹ãã³ã³ããžãã ãªã¬ãŒã·ã§ã³ã·ããã¯ã©ã¹ã«åå ããããŒãã«ãæ·»ä»ãã¡ã€ã«ã®ããããŒãã«ãªã©ããããŸãã
geodatabase.ApplyEdits(() =>
{
using (InsertCursor insertCursor = citiesTable.CreateInsertCursor())
using (RowBuffer rowBuffer = citiesTable.CreateRowBuffer())
{
rowBuffer["State"] = "Colorado";
rowBuffer["Name"] = "Fort Collins";
rowBuffer["Population"] = 167830;
insertCursor.Insert(rowBuffer);
rowBuffer["Name"] = "Denver";
rowBuffer["Population"] = 727211;
insertCursor.Insert(rowBuffer);
// Insert more rows here
// A more realistic example would be reading source data from a file
insertCursor.Flush();
}
});
UpdateCursor
ã¯ã©ã¹ã¯ãè¡ãé«éã«æŽæ°ããããã«èšèšãããŠããŸããå°ãªããšããTable.CreateRow()
ã¡ãœãããš Row.Store()
ã¡ãœãããç¹°ãè¿ãåŒã³åºãã®ãšåç以äžã®ããã©ãŒãã³ã¹ãä¿èšŒãããŠããŸããå€ãã®å Žåããã®ããã©ãŒãã³ã¹ã¯å€§å¹
ã«åäžããã§ãããã
using (UpdateCursor updateCursor = citiesTable.CreateUpdateCursor(queryFilter, false))
{
if (updateCursor.MoveNext())
{
using (Row row = updateCursor.Current)
{
int stateIndex = row.FindField("State");
row[stateIndex] = "Colorado";
updateCursor.Update(row);
}
}
}
ArcGIS Pro ã¢ãã€ã³ã§äœ¿çšããå ŽåãæŽæ°ã«ãŒãœã«ã¯ç·šéæäœã®ã³ãŒã«ããã¯å
ã§äœ¿çšããå¿
èŠããããŸããã¹ã¿ã³ãã¢ãã³ã® CoreHost ã¢ããªã±ãŒã·ã§ã³ã§ã¯ãæŽæ°ã«ãŒãœã«ã®äœ¿çšã¯ Geodatabase.ApplyEdits
ã®åŒã³åºãå
ã«å²ãå¿
èŠããããŸãã
ããŒã¿ããŒã¹ã SQL ãªã©ã®ãã€ãã£ã ããã°ã©ãã³ã°èšèªããµããŒãããŠããå ŽåãDatabaseClient
ã¯ã©ã¹ã®éç㪠ExecuteStatement
ã¡ãœããã䜿ã£ãŠã¹ããŒãã¡ã³ããå®è¡ããããšãã§ããŸããã¹ããŒãã¡ã³ã㯠DDLïŒããŒã¿å®çŸ©èšèªïŒã DMLïŒããŒã¿æäœèšèªïŒã¹ããŒãã¡ã³ãã§ããã°äœã§ãæ§ããŸããããçµæã»ãããè¿ãããšã¯ã§ããŸãããSQL ã®æ§æã¯ãããŒã¹ãšãªãããŒã¿ããŒã¹ã§èŠæ±ããããšããã§ãã
å ã«èª¬æããããã«ãArcGIS.Core.Data API ã®ãã¹ãŠã®ã¡ãœããã¯ãã¡ã€ã³ CIM ã¹ã¬ããïŒMCTïŒã§åŒã³åºãããªããã°ãªããŸããããã ããããã€ãã®é€å€äºé ãååšããŸããArcGIS.Core.Data.SpatialQueryFilter ããã³ ArcGIS.Core.Data.QueryFilter ã¯ã©ã®ã¹ã¬ããã§ãæ§ç¯ã§ããŸãããQueryFilter ã䜿çšãã Search ããã³ Select ã¯ãMCT ã§åŒã³åºãå¿ èŠããããŸãã
çãããå Žåã¯ãããªãã«ã¹ã©ãã·ã¥ã®ããã¥ã¡ã³ããåç §ããŠããã®ã¡ãœãããä»»æã®ã¹ã¬ããã§åŒã³åºãããšãã§ãããã©ãããå€æããŠãã ããã
以åã« ArcObjects 㧠Geodatabase API ã®åºæã®ã€ã³ã¹ã¿ã³ã¹åç¹æ§ã«äŸåããã³ãŒããéçºããããšãããå ŽåãArcGIS.Core.Data API ã® Handle ããããã£ã䜿çšããŠãPro SDK ã«åçã®ããžãã¯ãå®è£ ããããšãã§ããŸããHandle ã¯ããã£ã¯ã·ã§ããªããŒãšããŠå¹ççã«äœ¿çšããããArcObjects ã®ãã€ã³ã¿ãŒãæ¯èŒããã®ãšåçã®ç䟡ãã§ãã¯ã«äœ¿çšã§ããŸãã
ã¢ãŒããã¯ã㣠ã»ã¯ã·ã§ã³ã®åé ã§è¿°ã¹ãããã«ãã¢ã³ãããŒãžãªãœãŒã¹ãæ瀺çã« Dispose ããããšãå¿ããªãã§ãã ããã äŸãã°ã以äžã®ãããªã³ãŒãã¯é¿ããŠãã ããã
if (row.GetTable().Handle == _handle)
{
//etc.
}
ãã®ã³ãŒãã¯ã管çããã Core.Data ããŒãã«ã€ã³ã¹ã¿ã³ã¹ãã€ã³ã¹ã¿ã³ã¹åããŸãããã®ããŒãã«ã€ã³ã¹ã¿ã³ã¹ã¯ãã¬ããŒãžã³ã¬ã¯ã·ã§ã³ããããŸã§ãã¢ã³ãããŒãžãªãœãŒã¹ãžã®åç §ã解æŸãããŸããããã®ã³ãŒãããç Žæ£ãããã«ã¬ããŒãžã³ã¬ã¯ã·ã§ã³ãããªããã°ãªããªãäœçŸäžãã®ããŒãã«ã€ã³ã¹ã¿ã³ã¹ãçæããã«ãŒãã®äžã§åŒã³åºãããŠããå Žåã«ã¯ãããã«æªãçµæã«ãªãå¯èœæ§ããããŸãã ãã®ä»£ããã«ãããŒãã«ãžã®æ瀺çãªåç §ãæ¯åååŸããHandle ããããã£ãè©äŸ¡ãããåŸã«ç Žæ£ããå¿ èŠããããŸãã
using (Table table = row.GetTable())
{
if (table.Handle == _handle)
{
// etc.
}
}
Row
ã¯ã©ã¹ãš Feature
ã¯ã©ã¹ã«ã¯ Handle
ããããã£ããããŸããããããã®å€ãç䟡æ§ãã§ãã¯ã«äœ¿çšããããšã¯ã§ããŸãããããã¯ãåãããŒã¹ãšãªãããŒã¿ããŒã¹ã®è¡ãåç
§ããç°ãªã Row
ãªããžã§ã¯ãã¯ãç°ãªã RowCursor
ãªããžã§ã¯ãã䜿çšããŠäœæã§ãããªãµã€ã¯ã«ããã RowCursor
ãªããžã§ã¯ãã¯åã Row
ã䜿çšããŠè€æ°ã®ããŒã¹ãšãªãããŒã¿ããŒã¹ã®è¡ãåç
§ããããã§ãã
ãžãªããŒã¿ããŒã¹ ãªããžã§ã¯ã㧠Geoprocessing API ã䜿çšãããå ŽåããããŸããäŸãã°ãDDL API ã§ãµããŒããããŠããªãããŒã¿ã¹ãã¢ãããŒã¿ã»ããã«å¯Ÿã㊠DDLïŒããŒã¿å®çŸ©èšèªïŒæäœãè¡ãããå Žåã«ã¯ããžãªããã»ã·ã³ã°ã䜿çšããå¿
èŠããããŸãããããã®ãªããžã§ã¯ããžã®ãã¹ãæäŸããããã«ãDatastore.GetPath()
ããã³ Dataset.GetPath()
ã«ãŒãã³ã䜿çšããããšãã§ããŸãã