I am creating an ArcGIS Pro Extension. I need to know the layer's path. To get the layer path, code developed so far:
var pointLayer = MapView.Active.Map.Layers.OfType<FeatureLayer>().FirstOrDefault(); var rasterLayer = MapView.Active.Map.Layers.OfType<RasterLayer>().FirstOrDefault(); var pointLayerPath = await QueuedTask.Run(() => pointLayer.GetPath()); var rasterLayerPath = await QueuedTask.Run(() => rasterLayer.GetPath());
pointLayerPath is assigned the correct path but rasterLayerPath is assigned a null value.
The result is the same for this code also.
MapView.Active.Map.GetLayersAsFlattenedList().OfType<RasterLayer>().FirstOrDefault();
How can I get the RasterLayer path?
Solved! Go to Solution.
Hi,
I use the following code to get raster layer path:
return QueuedTask.Run<string>(() =>
{
try
{
string fullSpec = string.Empty;
CIMDataConnection dataConnection = pLayer.GetDataConnection();
if (dataConnection is CIMStandardDataConnection)
{
CIMStandardDataConnection dataSConnection = dataConnection as CIMStandardDataConnection;
string sConnection = dataSConnection.WorkspaceConnectionString;
var wFactory = dataSConnection.WorkspaceFactory;
if (wFactory == WorkspaceFactory.Raster)
{
string sWorkspaceName = sConnection.Split('=')[1];
string sTable = dataSConnection.Dataset;
fullSpec = Path.Combine(sWorkspaceName, sTable);
}
}
return fullSpec;
}
catch (Exception ex)
{
System.Diagnostics.Debug.WriteLine(ex.ToString(), System.Reflection.Assembly.GetExecutingAssembly().FullName);
return string.Empty;
}
});
It works for file based rasters and Esri GRIDs. I don't check how it works with sde stored rasters
Hi,
I use the following code to get raster layer path:
return QueuedTask.Run<string>(() =>
{
try
{
string fullSpec = string.Empty;
CIMDataConnection dataConnection = pLayer.GetDataConnection();
if (dataConnection is CIMStandardDataConnection)
{
CIMStandardDataConnection dataSConnection = dataConnection as CIMStandardDataConnection;
string sConnection = dataSConnection.WorkspaceConnectionString;
var wFactory = dataSConnection.WorkspaceFactory;
if (wFactory == WorkspaceFactory.Raster)
{
string sWorkspaceName = sConnection.Split('=')[1];
string sTable = dataSConnection.Dataset;
fullSpec = Path.Combine(sWorkspaceName, sTable);
}
}
return fullSpec;
}
catch (Exception ex)
{
System.Diagnostics.Debug.WriteLine(ex.ToString(), System.Reflection.Assembly.GetExecutingAssembly().FullName);
return string.Empty;
}
});
It works for file based rasters and Esri GRIDs. I don't check how it works with sde stored rasters