Layers Intersection with an Envelope:
As we know Layers intersection is a common task in GIS, here we achieve this using Identity method.
Below is the code used to find the layers in the mapresource which are being intersected
with an envelope.
Method Call:
DataTable dt = GetIntersectionLayers(Map1.GetFunctionalities(0),x1,y1,x2,y2);
Method Definition:
public DataTable[] GetIntersectionLayers(
ESRI.ArcGIS.ADF.Web.DataSources.IMapFunctionality gisFunctionality, double minX,
double minY, double maxX, double maxY)
{
int pixelTolerance = 1;
DataTable[] dt = null;
ESRI.ArcGIS.ADF.Web.DataSources.IGISResource gisResource = gisFunctionality.Resource;
ESRI.ArcGIS.ADF.Web.DataSources.IQueryFunctionality queryFunctionality =
(ESRI.ArcGIS.ADF.Web.DataSources.IQueryFunctionality)gisResource.CreateFunctionality
(typeof(ESRI.ArcGIS.ADF.Web.DataSources.IQueryFunctionality), null);
string[] layerIDs = null;
string[] layerNames = null;
queryFunctionality.GetQueryableLayers(null, out layerIDs, out layerNames);
ESRI.ArcGIS.ADF.Web.Geometry.Envelope adfEnvelope =
new ESRI.ArcGIS.ADF.Web.Geometry.Envelope(minX, minY, maxX, maxY);
dt = queryFunctionality.Identify(gisFunctionality.Name, adfEnvelope,
pixelTolerance, ESRI.ArcGIS.ADF.Web.IdentifyOption.AllLayers, layerIDs);
return dt;
}
The method returns the data table with a collection of intersected layers.
Jan 23, 2010
Jan 2, 2010
how to zoom to a particular coordinate location in ArcGIS .Net webADF
Below is the method used to zoom in to a particular location using the coordinates. Unlike MapExtreme, ArcGIS uses ZoomFactor to zoom in and zoom out instead of ZoomWidth in MapExtreme.
Method:
private void ZoomToCoordinates()
{
ESRI.ArcGIS.ADF.Web.Geometry.Point center = null;
try
{
center = new ESRI.ArcGIS.ADF.Web.Geometry.Point(17.7244, 1.1883);
// Numeric value is the Zoom factor(1-10 ZoomsIn & 0 to 1 ZoomsOut)
Map1.Zoom(2, center);
}
catch (Exception)
{
throw;
}
finally
{
center = null;
}
}
Method:
private void ZoomToCoordinates()
{
ESRI.ArcGIS.ADF.Web.Geometry.Point center = null;
try
{
center = new ESRI.ArcGIS.ADF.Web.Geometry.Point(17.7244, 1.1883);
// Numeric value is the Zoom factor(1-10 ZoomsIn & 0 to 1 ZoomsOut)
Map1.Zoom(2, center);
}
catch (Exception)
{
throw;
}
finally
{
center = null;
}
}
How to add map resource dynamically to MapResourceManager + ArcGIS 9.3 and 9.3.1 .Net WebADF
In ArcGIS webADF, After publishing the services using ArcGIS SERVER(say map service), we can just add a map resource to the MapResourceManager manually in design time.
Now lets see how to add the map resource dynamically through code. Because mostly we may have multiple map resource that has to be shown only on request.
Below is the code through which we can achieve this.
Method call:
AddMapResourceDynamically("GlobalService", "Layers@GlobalService", false);
- GlobalService is the service name.
- Layers@GlobalService is the service definition(i.e Layers@Service_Name is the format)
- true or false to list the resource in the TOC Control.
Method Definition:
private void AddMapResourceDynamically(string resName, string resDefinition, bool IsTOC)
{
string m_ResourceName = string.Empty;
MapResourceItem mapResourceItem = null;
GISResourceItemDefinition resDef = null;
DisplaySettings displaySettings = null;
try
{
mapResourceItem = new MapResourceItem();
resDef = new GISResourceItemDefinition();
mapResourceItem.Name = resName;
// The services url which we use to fetch the services.
resDef.DataSourceDefinition = @"http://hostname/arcgis/services";
resDef.DataSourceType = "ArcGIS Server Internet";
resDef.ResourceDefinition = resDefinition;
resDef.DataSourceShared = true;
mapResourceItem.Parent = MapResourceManager1;
mapResourceItem.Definition = resDef;
displaySettings = new DisplaySettings();
displaySettings.Transparency = 0;
displaySettings.Visible = true;
displaySettings.DisplayInTableOfContents = IsTOC;
displaySettings.ImageDescriptor.TransparentColor = System.Drawing.Color.White;
displaySettings.ImageDescriptor.TransparentBackground = true;
mapResourceItem.DisplaySettings = displaySettings;
// Insert the new resource item at the beginning (top). MapResourceManager1.ResourceItems.Insert(MapResourceManager1.ResourceItems.Count, mapResourceItem);
// Create the map resource and return a reference in case it will be the
// primary map resource.
IMapResource mapResource = MapResourceManager1.CreateResource(mapResourceItem);
// If no other resource items are present, set the new map resource item as the
// primary map resource.
if (MapResourceManager1.ResourceItems.Count < 1)
{
Map1.PrimaryMapResource = mapResourceItem.Name;
Map1.Focus();
Map1.InitializeFunctionalities();
Map1.InitializeTileFunctionalities();
}
Toc1.Refresh();
}
catch (Exception)
{
throw;
}
finally
{
mapResourceItem = null;
resDef = null;
displaySettings = null;
}
}
The above code will add the map resource dynamically to the MapResourceManager and display it on the map on runtime.
Now lets see how to add the map resource dynamically through code. Because mostly we may have multiple map resource that has to be shown only on request.
Below is the code through which we can achieve this.
Method call:
AddMapResourceDynamically("GlobalService", "Layers@GlobalService", false);
- GlobalService is the service name.
- Layers@GlobalService is the service definition(i.e Layers@Service_Name is the format)
- true or false to list the resource in the TOC Control.
Method Definition:
private void AddMapResourceDynamically(string resName, string resDefinition, bool IsTOC)
{
string m_ResourceName = string.Empty;
MapResourceItem mapResourceItem = null;
GISResourceItemDefinition resDef = null;
DisplaySettings displaySettings = null;
try
{
mapResourceItem = new MapResourceItem();
resDef = new GISResourceItemDefinition();
mapResourceItem.Name = resName;
// The services url which we use to fetch the services.
resDef.DataSourceDefinition = @"http://hostname/arcgis/services";
resDef.DataSourceType = "ArcGIS Server Internet";
resDef.ResourceDefinition = resDefinition;
resDef.DataSourceShared = true;
mapResourceItem.Parent = MapResourceManager1;
mapResourceItem.Definition = resDef;
displaySettings = new DisplaySettings();
displaySettings.Transparency = 0;
displaySettings.Visible = true;
displaySettings.DisplayInTableOfContents = IsTOC;
displaySettings.ImageDescriptor.TransparentColor = System.Drawing.Color.White;
displaySettings.ImageDescriptor.TransparentBackground = true;
mapResourceItem.DisplaySettings = displaySettings;
// Insert the new resource item at the beginning (top). MapResourceManager1.ResourceItems.Insert(MapResourceManager1.ResourceItems.Count, mapResourceItem);
// Create the map resource and return a reference in case it will be the
// primary map resource.
IMapResource mapResource = MapResourceManager1.CreateResource(mapResourceItem);
// If no other resource items are present, set the new map resource item as the
// primary map resource.
if (MapResourceManager1.ResourceItems.Count < 1)
{
Map1.PrimaryMapResource = mapResourceItem.Name;
Map1.Focus();
Map1.InitializeFunctionalities();
Map1.InitializeTileFunctionalities();
}
Toc1.Refresh();
}
catch (Exception)
{
throw;
}
finally
{
mapResourceItem = null;
resDef = null;
displaySettings = null;
}
}
The above code will add the map resource dynamically to the MapResourceManager and display it on the map on runtime.
Subscribe to:
Posts (Atom)