Обработка слоя
-
- Гуру
- Сообщения: 527
- Зарегистрирован: 21 окт 2012, 00:17
- Репутация: 15
- Ваше звание: developer
Обработка слоя
Из шейпфала можно получить слой, который затем можно добавить на карту.
1) Можно ли из шейпфайла получить растровый датасет?
2) чтобы на него повесить рендерер по умолчанию?
3) Или это плохая затычка и надо все делать через соответствующий интерфейс IWorkspaceFactory?
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
-
- Гуру
- Сообщения: 527
- Зарегистрирован: 21 окт 2012, 00:17
- Репутация: 15
- Ваше звание: developer
Re: Обработка слоя
Оговорился случайно. шейпфайлы я уже не использую.
Нужные мне инструменты написал сам. Тем более ArcGis не может использовать все ядра.
Но теперь проблема с добавлением сформированной картинки на карту.
Мне надо убрать стандартные обработчики ArcGis-a, которые применяются к карте по умолчанию.
1) А именно надо убрать: Apply Gamma Stretch
2) Поставить Stretch none.
Если у кого-то есть сниппет выложите его, пожалуйста.
Добавление: код приведенный в данном комментарии нельзя использовать для добавления слоя на карту. Он некорректен. просто раньше именно этот код использовался в проекте, что и вызвало значительные трудности.
Нужные мне инструменты написал сам. Тем более 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);
1) А именно надо убрать: Apply Gamma Stretch
2) Поставить Stretch none.
Если у кого-то есть сниппет выложите его, пожалуйста.
Добавление: код приведенный в данном комментарии нельзя использовать для добавления слоя на карту. Он некорректен. просто раньше именно этот код использовался в проекте, что и вызвало значительные трудности.
Последний раз редактировалось novice 14 май 2013, 23:38, всего редактировалось 1 раз.
-
- Гуру
- Сообщения: 527
- Зарегистрирован: 21 окт 2012, 00:17
- Репутация: 15
- Ваше звание: developer
Re: Обработка слоя
Код: Выделить всё
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);
-
- Гуру
- Сообщения: 527
- Зарегистрирован: 21 окт 2012, 00:17
- Репутация: 15
- Ваше звание: developer
Re: Обработка слоя
не актуально
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость