Пересечь два слоя и получить результирующие элементы - PullRequest
3 голосов
/ 01 августа 2011

У меня есть X слоев на карте, и мне нужно пересечь выбранные слои (по два за раз) и покрасить получившиеся объекты.

Я пытаюсь заставить этот код работать

// get first feature (index 0)
ESRI.ArcGIS.ADF.Web.Geometry.Geometry adfFeature =
                m_firstLayer.GeometryFromRow(m_firstLayer.Rows[0]) 
as ESRI.ArcGIS.ADF.Web.Geometry.Geometry;

// THE FOLLOWING LINE RETURNS NULL
ESRI.ArcGIS.Geometry.IGeometry featureInterface = 
    adfFeature as ESRI.ArcGIS.Geometry.IGeometry;

ESRI.ArcGIS.Geometry.ITopologicalOperator topoOp = 
    adfFeature as ESRI.ArcGIS.Geometry.ITopologicalOperator;

Как использовать интерфейс IGeometry с объектом ADF Geometry?

Я не могу найти сэмплы для пересечения объектов между двумя слоями, и очень жаль, что Пространственные объединения - это просто функция рабочего стола arcgis, я наверняка смогу их использовать!

1 Ответ

1 голос
/ 03 августа 2011

Я не думаю, что вы используете IGeometry напрямую.Однако, если вы знаете специализированный тип (Point, Polyline, Polygon), вы можете преобразовать (см. Маркеры "Web ADF в ArcGIS Server ArcObjects") в ArcObjects.

Вы можете проверить, какой подтип у вас ESRI.ArcGIS.ADF.Web.Geometry.Geometry adfFeature, и соответственно выполнить преобразование.

Кстати, я предлагаю вам никогда не использовать приведение типа "как", поскольку оно может молча провалиться (просто возвращая null).Вместо этого я предлагаю:

ESRI.ArcGIS.Geometry.IGeometry featureInterface = 
    (ESRI.ArcGIS.Geometry.IGeometry)adfFeature;

Тогда вы увидите проблему, как только она возникнет.

...