Страница 1 из 1

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

Добавлено: 13 май 2013, 15:43
novice
Из шейпфала можно получить слой, который затем можно добавить на карту.

1) Можно ли из шейпфайла получить растровый датасет?
2) чтобы на него повесить рендерер по умолчанию?
3) Или это плохая затычка и надо все делать через соответствующий интерфейс IWorkspaceFactory?

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

Добавлено: 13 май 2013, 23:32
Дмитрий Барышников
Я думаю, что из векторного формата (шейпфайл) нельзя получить 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

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

Добавлено: 14 май 2013, 11:18
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.

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

Добавление: код приведенный в данном комментарии нельзя использовать для добавления слоя на карту. Он некорректен. просто раньше именно этот код использовался в проекте, что и вызвало значительные трудности.

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

Добавлено: 14 май 2013, 11:23
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);
Вот как я раньше устанавливал тип сглаживания, но тогда у меня был доступ к базе данных. Т.к. я все хранил в базе. Теперь надо обойтись без гбд. Это возможно и как?

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

Добавлено: 14 май 2013, 13:25
novice
не актуально