AxMapControl. Добавить объекты в FeatureClass
-
- Гуру
- Сообщения: 527
- Зарегистрирован: 21 окт 2012, 00:17
- Репутация: 15
- Ваше звание: developer
AxMapControl. Добавить объекты в FeatureClass
Можно ли и как добавить все объекты с карты(геометрия объектов - точка) в FeatureClass? Можно ли создать FeatureClass не создавая базу данных?
Последний раз редактировалось novice 15 апр 2013, 09:24, всего редактировалось 1 раз.
-
- Гуру
- Сообщения: 527
- Зарегистрирован: 21 окт 2012, 00:17
- Репутация: 15
- Ваше звание: developer
Re: AxMapControl. Добавить объекты в FeatureClass
Подскажите, пожалуйста, как создать feature class в приложении на c#.
В приложении не используются базы данных вообще. Вся работа с АркГисом организована через AxMapControl.
Собственно вопрос программистам: могу ли я в коде создать базу данных. В ней создать featureDataset, запихать в него 50 000 точек, сохранить в б/д и его уже использовать в функции PointDensity???
Или есть способ попроще?
В приложении не используются базы данных вообще. Вся работа с АркГисом организована через AxMapControl.
Собственно вопрос программистам: могу ли я в коде создать базу данных. В ней создать featureDataset, запихать в него 50 000 точек, сохранить в б/д и его уже использовать в функции PointDensity???
Или есть способ попроще?
- novia
- Гуру
- Сообщения: 2261
- Зарегистрирован: 29 апр 2011, 15:06
- Репутация: 489
- Откуда: Тель-Авив
Re: AxMapControl. Добавить объекты в FeatureClass
зачем вы уже в который раз пишете новое сообщение вместо редактирования старого?
понравилось? жми палец вверх 

-
- Гуру
- Сообщения: 527
- Зарегистрирован: 21 окт 2012, 00:17
- Репутация: 15
- Ваше звание: developer
Re: AxMapControl. Добавить объекты в FeatureClass
при добавлении записи тема всплывает наверх, чего не происходит при редактировании. по крайне мере так было раньше
- novia
- Гуру
- Сообщения: 2261
- Зарегистрирован: 29 апр 2011, 15:06
- Репутация: 489
- Откуда: Тель-Авив
Re: AxMapControl. Добавить объекты в FeatureClass
а за флуд тема удаляется, как такой вариант?
понравилось? жми палец вверх 

-
- Гуру
- Сообщения: 527
- Зарегистрирован: 21 окт 2012, 00:17
- Репутация: 15
- Ваше звание: developer
Re: AxMapControl. Добавить объекты в FeatureClass
Как хотите: удаляйте темы... сколько бы я ни постил вопросы, но c# программиста с опытом работы с ArcGisом я на этом сайте еще не встретитил. Неужели такая редкая профессия, даже на хантере есть пара вакансий???
А темы все разные. Первая тема посвящена вопросу о том, как сформировать интерполированное изображение плотности. Кстати никакая кластеризация здесь не требуется.
Самый простой алгоритм - 1) разбить нужный экстент на матрицу квадратов. 2) Для каждой точки задать радиус обнаружения(можно тоже в виде квадрата со стороной равной половине квадрата из матрицы) 3) Посчитать для каждого квадрата из матрицы сколько точек его затрагивают. Это будет его вес 4) Нормализовать данные с учетос того что цветов будет, например, 256. 5) Закрасить каждый квадрат его цветом.
Но здесь проблема - 1) не понятно как задать прозрачность у квадратов из матрицы.
2) вблизи, все будет закрашено одним цветом - это фигово. А если задать меньше сторону квадрата - то будут жуткие тормоза.
Следующие темы уже конкретизирует несколько разных подходов к решению данной проблемы средствами ArcGis-а
На мой взгляд есть два решениея:
1) Сформировать FeatureClass из точек
2) Сформировать shp из точек и уже его использовать в интерфейсе IGeoDataset.
Оба случая мне пока не понятны.
А темы все разные. Первая тема посвящена вопросу о том, как сформировать интерполированное изображение плотности. Кстати никакая кластеризация здесь не требуется.
Самый простой алгоритм - 1) разбить нужный экстент на матрицу квадратов. 2) Для каждой точки задать радиус обнаружения(можно тоже в виде квадрата со стороной равной половине квадрата из матрицы) 3) Посчитать для каждого квадрата из матрицы сколько точек его затрагивают. Это будет его вес 4) Нормализовать данные с учетос того что цветов будет, например, 256. 5) Закрасить каждый квадрат его цветом.
Но здесь проблема - 1) не понятно как задать прозрачность у квадратов из матрицы.
2) вблизи, все будет закрашено одним цветом - это фигово. А если задать меньше сторону квадрата - то будут жуткие тормоза.
Следующие темы уже конкретизирует несколько разных подходов к решению данной проблемы средствами ArcGis-а
На мой взгляд есть два решениея:
1) Сформировать FeatureClass из точек
2) Сформировать shp из точек и уже его использовать в интерфейсе IGeoDataset.
Оба случая мне пока не понятны.
- novia
- Гуру
- Сообщения: 2261
- Зарегистрирован: 29 апр 2011, 15:06
- Репутация: 489
- Откуда: Тель-Авив
Re: AxMapControl. Добавить объекты в FeatureClass
вы правильно делаете, задавая новый вопрос в новой теме. но неправильно делаете когда в теме одно ваше сообщение и вы пишете второе, чтобы поднять ее наверх.
несмотря на наличие полномочий, я вряд ли буду удалять сообщения. сам против цензуры, если обсуждение идет в рамках правил форума. однако "размножение" сообщений мне кажется неправильным и я склонен впредь соединять такие множественные вопросы в один пост.
отвечая на первый вопрос - нужно создать класс, уверен, есть метод для этого ,затем открыть сессию загрузки данных/редактирования - отправить туда точки.
несмотря на наличие полномочий, я вряд ли буду удалять сообщения. сам против цензуры, если обсуждение идет в рамках правил форума. однако "размножение" сообщений мне кажется неправильным и я склонен впредь соединять такие множественные вопросы в один пост.
отвечая на первый вопрос - нужно создать класс, уверен, есть метод для этого ,затем открыть сессию загрузки данных/редактирования - отправить туда точки.
понравилось? жми палец вверх 

-
- Гуру
- Сообщения: 527
- Зарегистрирован: 21 окт 2012, 00:17
- Репутация: 15
- Ваше звание: developer
Re: AxMapControl. Добавить объекты в FeatureClass
Спасибо, понятно.
В идеале бы найти пример с RasterDensityOp, позволяющий из точек карты(AxMapControl) построить интерполированное изображение и отобразить это изображение на AxMapControl.
Сама документация: 1) по методу pointDensity: http://resources.esri.com/help/9.3/arcg ... ityOp.html
2) по созданию FeatureClass: http://resources.esri.com/help/9.3/arcg ... 8181d1.htm . Вот здесь не понятно, можно ли обойтись без рабочего пространства. И какое рабочее пространство мне надо указывать, если все объекты хранятся в IGraphicContainer, а сама карта хранится в AxMapControl.
Здесь говорится, что FeatureClass можно создать в Б/Д: http://resources.esri.com/help/9.3/arcg ... xample.htm
3) Вместо 2 пункта можно создать Shapefile. Но тоже не понятно как.
4) Связь FeatureLayer и FeatureClass http://gis.stackexchange.com/questions/ ... ture-layer
Часть шагов уже понятна:
Шаг 3 - не понятен.
И вот еще не понятно: во всех примерах shapefile или открывается, или создается в базе данных, или в него выгружается часть mxd карты в векторном формате. А можно ли создать просто пустой файл в проекции, соответствующей проекции карты и добавить в него несколько точек.
Тоже не понятно: shapefile АркГиса и обычный файл shp http://en.wikipedia.org/wiki/Shapefile - это одно и тоже?
В идеале бы найти пример с RasterDensityOp, позволяющий из точек карты(AxMapControl) построить интерполированное изображение и отобразить это изображение на AxMapControl.
Сама документация: 1) по методу pointDensity: http://resources.esri.com/help/9.3/arcg ... ityOp.html
2) по созданию FeatureClass: http://resources.esri.com/help/9.3/arcg ... 8181d1.htm . Вот здесь не понятно, можно ли обойтись без рабочего пространства. И какое рабочее пространство мне надо указывать, если все объекты хранятся в IGraphicContainer, а сама карта хранится в AxMapControl.
Здесь говорится, что FeatureClass можно создать в Б/Д: http://resources.esri.com/help/9.3/arcg ... xample.htm
3) Вместо 2 пункта можно создать Shapefile. Но тоже не понятно как.
4) Связь FeatureLayer и FeatureClass http://gis.stackexchange.com/questions/ ... ture-layer
Часть шагов уже понятна:
Код: Выделить всё
// 1) создали экземпляр класса
IDensityOp pDensityOP = (IDensityOp)new RasterDensityOp(); // создали объект класса IDensityOp // метод PointDensity
object Missing = Type.Missing;
// 2) Определили границы
ESRI.ArcGIS.GeoAnalyst.RasterNeighborhood pNbr = new ESRI.ArcGIS.GeoAnalyst.RasterNeighborhood();
pNbr.SetCircle(1000, ESRI.ArcGIS.GeoAnalyst.esriGeoAnalysisUnitsEnum.esriUnitsMap);
// 3) Создаем класс пространственных объектов. Вот здесь не понятно.
// 4) Применяем данный метод
try
{
IGeoDataset rez = pDensityOP.PointDensity((IGeoDataset)pFClass01, pNbr, ref Missing); // - this line causes an exception
}
// 5) Отобразить rez на карте
И вот еще не понятно: во всех примерах shapefile или открывается, или создается в базе данных, или в него выгружается часть mxd карты в векторном формате. А можно ли создать просто пустой файл в проекции, соответствующей проекции карты и добавить в него несколько точек.
Тоже не понятно: shapefile АркГиса и обычный файл shp http://en.wikipedia.org/wiki/Shapefile - это одно и тоже?
- novia
- Гуру
- Сообщения: 2261
- Зарегистрирован: 29 апр 2011, 15:06
- Репутация: 489
- Откуда: Тель-Авив
Re: AxMapControl. Добавить объекты в FeatureClass
он самыйnovice писал(а): Тоже не понятно: shapefile АркГиса и обычный файл shp http://en.wikipedia.org/wiki/Shapefile - это одно и тоже?
понравилось? жми палец вверх 

-
- Гуру
- Сообщения: 939
- Зарегистрирован: 29 май 2011, 19:41
- Репутация: 94
- Откуда: Киев
Re: AxMapControl. Добавить объекты в FeatureClass
Код: Выделить всё
3) Создаем класс пространственных объектов. Вот здесь не понятно.
Шейпфайл может создаваться как в .gdb (базе геоданных), так и просто в папке. И да, он изначально создаётся пустой и с указанной системой координат.
Шейпфайл никаким боком к файлу проекта (.mxd) не привязан. Шейпфайл создаётся пустой, и только потом добавляется в проект.
Хотя я не все посты прочитал

-
- Гуру
- Сообщения: 527
- Зарегистрирован: 21 окт 2012, 00:17
- Репутация: 15
- Ваше звание: developer
Re: AxMapControl. Добавить объекты в FeatureClass
Спасибо, путь понятен: из ArcMap cоздать shapefile для точек, затем в проге его скопировать, заполнить точками (тут тоже пока трудность), сохранить и использовать для PointDensity.
Собственно меня интересовало: можно ли создать shapefile в программе (или в ArcMap-e) без создания базы данных.
Это достаточно принципиальный вопрос. А путь, про который рассказывате вы, использует базу данных. Т.к., насколько я знаю, при использовании ArcMap автоматически используется база данных default.gdb
Также, если сохранять шейпфал просто в некоторой директории, то мне не понятно, где хранится его атрибутивная информация.
И еще: есть у кого-то литература про рабочиепространства ArcGis-a? Желательно ссылку на дерево классов ArcGis - а. (хотя бы ту его часть, которая относится к рабочим пространствам?)?
Собственно меня интересовало: можно ли создать shapefile в программе (или в ArcMap-e) без создания базы данных.
Это достаточно принципиальный вопрос. А путь, про который рассказывате вы, использует базу данных. Т.к., насколько я знаю, при использовании ArcMap автоматически используется база данных default.gdb
Также, если сохранять шейпфал просто в некоторой директории, то мне не понятно, где хранится его атрибутивная информация.
И еще: есть у кого-то литература про рабочиепространства ArcGis-a? Желательно ссылку на дерево классов ArcGis - а. (хотя бы ту его часть, которая относится к рабочим пространствам?)?
-
- Гуру
- Сообщения: 939
- Зарегистрирован: 29 май 2011, 19:41
- Репутация: 94
- Откуда: Киев
Re: AxMapControl. Добавить объекты в FeatureClass
Из того, что знаю:
- shapefile можно создавать в обычной директории ОС, путь хранения указывается в Create Feature Class. В директории будет находиться
mypoints.dbf (вот тут и храниться атрибутивная таблица)
mypoints.prj (файл проекции)
mypoints.shp (собственно сам шейпфайл, который не откроется без всех остальных файлов)
mypoints.sbn
mypoints.sbx
mypoints.shx
mypoints.xml
Из того, о чём догадываюсь:
- default.gdb - действует как папка Temp (в Windows). default.gdb создается во время установки ArcGIS на компьютер (она есть всегда). НО! если шейпфайл создан в директории, то он совершенно никак не связан с default.gdb.
- shapefile можно создавать в обычной директории ОС, путь хранения указывается в Create Feature Class. В директории будет находиться
mypoints.dbf (вот тут и храниться атрибутивная таблица)
mypoints.prj (файл проекции)
mypoints.shp (собственно сам шейпфайл, который не откроется без всех остальных файлов)
mypoints.sbn
mypoints.sbx
mypoints.shx
mypoints.xml
Из того, о чём догадываюсь:
- default.gdb - действует как папка Temp (в Windows). default.gdb создается во время установки ArcGIS на компьютер (она есть всегда). НО! если шейпфайл создан в директории, то он совершенно никак не связан с default.gdb.
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 2 гостя