Обработка слоя

ArcGIS 8.x,9.x,10.x (Arcview, ArcEditor, Arcinfo).
Ответить
novice
Гуру
Сообщения: 527
Зарегистрирован: 21 окт 2012, 00:17
Репутация: 15
Ваше звание: developer

Обработка слоя

Сообщение novice »

Из шейпфала можно получить слой, который затем можно добавить на карту.

1) Можно ли из шейпфайла получить растровый датасет?
2) чтобы на него повесить рендерер по умолчанию?
3) Или это плохая затычка и надо все делать через соответствующий интерфейс IWorkspaceFactory?
Последний раз редактировалось novice 14 май 2013, 17:03, всего редактировалось 1 раз.
Аватара пользователя
Дмитрий Барышников
Гуру
Сообщения: 2572
Зарегистрирован: 17 ноя 2009, 19:17
Репутация: 261
Откуда: Москва

Re: Обработка слоя

Сообщение Дмитрий Барышников »

Я думаю, что из векторного формата (шейпфайл) нельзя получить Raster Dataset.
IWorkspaceFactory
А это тут причем? IWorkspaceFactory - это интерфейс к одной из фабрик источников данных, как растровых, так и векторных.
AccessWorkspaceFactory (esriDataSourcesGDB) ESRI Access Workspace Factory.
AMSWorkspaceFactory (esriTrackingAnalyst) Controls functionality for the tracking workspace factory.
ArcInfoWorkspaceFactory (esriDataSourcesFile) Workspace factory used to create workspace objects for ArcInfo coverages and Info tables.
CadWorkspaceFactory (esriDataSourcesFile) ESRI Cad Workspace Factory.
ExcelWorkspaceFactory (esriDataSourcesOleDB) Excel Workspace Factory.
FileGDBWorkspaceFactory (esriDataSourcesGDB) File GeoDatabase Workspace Factory.
GeoRSSWorkspaceFactory (esriDataSourcesFile) GeoRSS workspace factory.
IMSWorkspaceFactory (esriGISClient) The IMS Workspace Factory.
InMemoryWorkspaceFactory (esriDataSourcesGDB)
NetCDFWorkspaceFactory (esriDataSourcesNetCDF) Provides access to members that control creation of NetCDF workspaces.
OLEDBWorkspaceFactory (esriDataSourcesOleDB) OleDB Workspace Factory.
PCCoverageWorkspaceFactory (esriDataSourcesFile) ESRI PC ARC/INFO Workspace Factory.
PlugInWorkspaceFactory ESRI Plug-In Workspace Factory.
RasterWorkspaceFactory (esriDataSourcesRaster) Provides access to members that control creation of raster workspaces.
SDCWorkspaceFactory (esriDataSourcesFile) ESRI SDC workspace factory.
SdeWorkspaceFactory (esriDataSourcesGDB) ESRI SDE Workspace Factory.
ShapefileWorkspaceFactory (esriDataSourcesFile) ESRI Shapefile Workspace Factory.
SqlWorkspaceFactory (esriDataSourcesGDB) Sql workspace factory
StreetMapWorkspaceFactory (esriDataSourcesFile) ESRI StreetMap workspace factory.
TextFileWorkspaceFactory (esriDataSourcesOleDB) Text File Workspace Factory.
TinWorkspaceFactory (esriDataSourcesFile) ESRI TIN workspace factory is used to access TINs on disk.
ToolboxWorkspaceFactory (esriGeoprocessing) Workspace Factory used to open toolbox workspaces.
VpfWorkspaceFactory (esriDataSourcesFile) ESRI VPF Workspace Factory
novice
Гуру
Сообщения: 527
Зарегистрирован: 21 окт 2012, 00:17
Репутация: 15
Ваше звание: developer

Re: Обработка слоя

Сообщение novice »

Оговорился случайно. шейпфайлы я уже не использую.
Нужные мне инструменты написал сам. Тем более ArcGis не может использовать все ядра.

Но теперь проблема с добавлением сформированной картинки на карту.

Код: Выделить всё

            ISpatialReferenceFactory sRefEnv = new SpatialReferenceEnvironment();
            IProjectedCoordinateSystem newGeoCoord =
                sRefEnv.CreateProjectedCoordinateSystem((int)esriSRProjCSType.esriSRProjCS_World_Mercator);
            IRasterLayer layer = new RasterLayer();
            layer.SpatialReference = newGeoCoord;
            layer.CreateFromFilePath(rasterfileLocation);

            ILayerEffects pLayerEffects = null;
            pLayerEffects = (ILayerEffects)layer;
            if (pLayerEffects.SupportsTransparency)
                pLayerEffects.Transparency = 30;

            Map1.AddLayer(layer);
Мне надо убрать стандартные обработчики ArcGis-a, которые применяются к карте по умолчанию.
1) А именно надо убрать: Apply Gamma Stretch
2) Поставить Stretch none.

Если у кого-то есть сниппет выложите его, пожалуйста.

Добавление: код приведенный в данном комментарии нельзя использовать для добавления слоя на карту. Он некорректен. просто раньше именно этот код использовался в проекте, что и вызвало значительные трудности.
Последний раз редактировалось novice 14 май 2013, 23:38, всего редактировалось 1 раз.
novice
Гуру
Сообщения: 527
Зарегистрирован: 21 окт 2012, 00:17
Репутация: 15
Ваше звание: developer

Re: Обработка слоя

Сообщение novice »

Код: Выделить всё

                                IRasterDataset rasterDataset = rasterWS.OpenRasterDataset(nameRD);
                                IRasterLayer rlMosaicDataset = new RasterLayer();
                                rlMosaicDataset.CreateFromDataset(rasterDataset);

                                #region Renderer
                                IRasterRGBRenderer stretchRenderer = new RasterRGBRenderer();
                                IRasterRenderer rasterRenderer = (IRasterRenderer)stretchRenderer;
                                IRaster raster = rasterDataset.CreateDefaultRaster();
                                rasterRenderer.Raster = raster;
                                rasterRenderer.ResamplingType = rstResamplingTypes.RSP_BilinearInterpolation;  // тип сглаживания
                                rasterRenderer.Update();
                                IRasterStretch stretchType = (IRasterStretch)rasterRenderer;
                                stretchType.StretchType =
                                    esriRasterStretchTypesEnum.esriRasterStretch_NONE;
                                stretchType.StandardDeviationsParam = 2;
                                rlMosaicDataset.Renderer = rasterRenderer;
                                #endregion
                                rlMosaicDataset.MaximumScale = m_Scale[res[i].posCurrent];//значение меньше
                                rlMosaicDataset.MinimumScale = m_Scale[res[i].posPrev];
                                map.AddLayer((ILayer)rlMosaicDataset);
Вот как я раньше устанавливал тип сглаживания, но тогда у меня был доступ к базе данных. Т.к. я все хранил в базе. Теперь надо обойтись без гбд. Это возможно и как?
novice
Гуру
Сообщения: 527
Зарегистрирован: 21 окт 2012, 00:17
Репутация: 15
Ваше звание: developer

Re: Обработка слоя

Сообщение novice »

не актуально
Ответить

Вернуться в «ArcGIS»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 2 гостя