Работа с FDO в Visual Studio на языке C#
-
- Новоприбывший
- Сообщения: 9
- Зарегистрирован: 29 сен 2009, 11:47
- Репутация: 0
Работа с FDO в Visual Studio на языке C#
Добрый день господа, у меня вопрос по поводу работы с FDO.
На странице www.fdo.osgo.org я скачал и установил
FDO Open Source 3.4.0. Инсталяция прошла успешно.
Вот теперь только я не знаю как прикрепить этот FDO механизм
в Visual Studio.
Моя задача такова:
Загрузить при помащью FDO механизма Геометрическии данные из базы данных Oracle и
периделать эти данные в Shape формат.
Пожалуйста помогите
На странице www.fdo.osgo.org я скачал и установил
FDO Open Source 3.4.0. Инсталяция прошла успешно.
Вот теперь только я не знаю как прикрепить этот FDO механизм
в Visual Studio.
Моя задача такова:
Загрузить при помащью FDO механизма Геометрическии данные из базы данных Oracle и
периделать эти данные в Shape формат.
Пожалуйста помогите
- JEY
- Активный участник
- Сообщения: 228
- Зарегистрирован: 17 июл 2008, 13:42
- Репутация: 1
Re: Работа с FDO в Visual Studio на языке C#
Добрый день! Постараюсь коротко ответить на Ваш вопрос.
Из всех многочисленных библиотек, вложенных в дистрибутив FDO, Вас интересуют только те, что подключаются к среде разработки приложений на основе .NET Framework (другими словами это managed code).
Так вот. Следующий список файлов и есть то, что Вам нужно:
И в поиске примеров на Visual C#.NET могу настоятельно посоветовать Вам скачать исходный код FDO Toolbox.
Из всех многочисленных библиотек, вложенных в дистрибутив FDO, Вас интересуют только те, что подключаются к среде разработки приложений на основе .NET Framework (другими словами это managed code).
Так вот. Следующий список файлов и есть то, что Вам нужно:
- OSGeo.FDO.dll
OSGeo.FDO.Common.dll
OSGeo.FDO.Geometry.dll
OSGeo.FDO.Providers.MySQL.Overrides.dll
OSGeo.FDO.Providers.ODBC.Overrides.dll
OSGeo.FDO.Providers.Rdbms.Overrides
OSGeo.FDO.Providers.SHP.Overrides.dll
OSGeo.FDO.Providers.SQLServerSpatial.Overrides.dll
OSGeo.FDO.Providers.WMS.Overrides.dll
OSGeo.FDO.Spatial.dll
И в поиске примеров на Visual C#.NET могу настоятельно посоветовать Вам скачать исходный код FDO Toolbox.
-
- Новоприбывший
- Сообщения: 9
- Зарегистрирован: 29 сен 2009, 11:47
- Репутация: 0
Re: Работа с FDO в Visual Studio на языке C#
Большое спасибо за ответ
исходный код FDO Toolbox на страничке не выложен.
Или я очень не внимательно смотрю. На страничке выложена только EXE.
Мне удалось найти SharpMapFdo.zip это и есть исходный код ?
исходный код FDO Toolbox на страничке не выложен.
Или я очень не внимательно смотрю. На страничке выложена только EXE.
Мне удалось найти SharpMapFdo.zip это и есть исходный код ?
- JEY
- Активный участник
- Сообщения: 228
- Зарегистрирован: 17 июл 2008, 13:42
- Репутация: 1
Re: Работа с FDO в Visual Studio на языке C#
Ну если ничего не изменилось, то вполне возможно, что это исходный код провайдера данных SharpMap для FDO...
-
- Новоприбывший
- Сообщения: 9
- Зарегистрирован: 29 сен 2009, 11:47
- Репутация: 0
Re: Работа с FDO в Visual Studio на языке C#
У меня возник вапрос по поваду создания схемы пространственных данных
по инструкции Я проделал следущии шаги ,
Создайте или выберите из реестра провайдер данных.
Создайте менеджер соединений.
Создайте соединение.
Определите тип источника данных.
Получите список файлов источника данных.
Получите состояние соединения.
Получите свойства соединения.
Получите значения свойств соединения.
Установите свойства соединения.
Откройте соединение.
Откройте продолжительное соединение.
Получите список файлов источника данных, если они существуют.
Я открыл папку с shp файлами...
теперь необходимо создать схему пространственных данных.
Я не понемаю для чего создаётся схему пространственных данных.
Читал документ на английском и ничего не понял.....
Помоните пожалуйста
по инструкции Я проделал следущии шаги ,
Создайте или выберите из реестра провайдер данных.
Создайте менеджер соединений.
Создайте соединение.
Определите тип источника данных.
Получите список файлов источника данных.
Получите состояние соединения.
Получите свойства соединения.
Получите значения свойств соединения.
Установите свойства соединения.
Откройте соединение.
Откройте продолжительное соединение.
Получите список файлов источника данных, если они существуют.
Я открыл папку с shp файлами...
теперь необходимо создать схему пространственных данных.
Я не понемаю для чего создаётся схему пространственных данных.
Читал документ на английском и ничего не понял.....
Помоните пожалуйста
- JEY
- Активный участник
- Сообщения: 228
- Зарегистрирован: 17 июл 2008, 13:42
- Репутация: 1
Re: Работа с FDO в Visual Studio на языке C#
Под схемой пространственных данных подразумевается информация о данных, содержащихся в источнике данных. То есть, в Вашем случае, каждый шейп-файл является для FDO источником данных. Для того, чтобы FDO мог считывать данные из шейп-файла, необходимо получить информацию о количестве полей и их типе данных (если тип данных для конкретного поля является строчным, то и длину этого поля в байтах), вот это и называется схемой пространственных данных.
-
- Новоприбывший
- Сообщения: 9
- Зарегистрирован: 29 сен 2009, 11:47
- Репутация: 0
Re: Работа с FDO в Visual Studio на языке C#
Добрый день господа, помогите пожалуйста в вапросе о захвате данный из Базы данных Оракла.
Соединиться с базой данной у меня получается без всяких проблем. Вот код:
class FDOOracleClass
{
private static IProviderRegistry FDORegistry = FeatureAccessManager.GetProviderRegistry();
private IConnectionManager FDOManager = FeatureAccessManager.GetConnectionManager();
ProviderCollection pcol = FDORegistry.GetProviders();
private IConnection FDOConnection = FeatureAccessManager.GetConnectionManager().CreateConnection("OSGeo.KingOracle.3.4");
public ConnectionState Constate;
string featureclsname;
// Connect to Oracle
public FDOOracleClass(string username, string password, string servicename, string featureclassname)
{
FDOConnection.ConnectionInfo.ConnectionProperties.SetProperty("USERNAME", username);
FDOConnection.ConnectionInfo.ConnectionProperties.SetProperty("PASSWORD", password);
FDOConnection.ConnectionInfo.ConnectionProperties.SetProperty("SERVICE", servicename);
FDOConnection.ConnectionInfo.ConnectionProperties.SetProperty("OracleSchema", servicename);
FDOConnection.ConnectionInfo.ConnectionProperties.SetProperty("KingFdoClass", featureclassname);
featureclsname = featureclassname;
Constate = FDOConnection.Open();
}
Проблеммы возникают когда я хочу захватить определённую гиометрию
Вот мой код
public GeometryCollection SelectAllQuery()
{
GeometryCollection Geo_Collection = new GeometryCollection();
try {
ISelect select = FDOConnection.CreateCommand(CommandType.CommandType_Select)as ISelect;
select.SetFeatureClassName(featureclsname);
Filter filter = Filter.Parse("ID >= 0");
select.Filter = filter;
ComputedIdentifier computedId = Expression.Parse("(ToString(DateTimeProp) as computedId)") as ComputedIdentifier;
select.PropertyNames.Add(computedId);
IFeatureReader reader = select.Execute();
FgfGeometryFactory gFac = new FgfGeometryFactory();
while (reader.ReadNext())
{
Byte[] Tmppts = reader.GetGeometry("Geometry");
Geo_Collection.Add(gFac.CreateGeometryFromFgf(Tmppts));
}
}
catch(OSGeo.FDO.Common.Exception ex)
{
Console.WriteLine(ex.Message.ToString());
}
return Geo_Collection;
}
Дело в том, что мне не удаёться получить какие либо данные.
Посли компиляции IFeatureReader reader = select.Execute();
В reader равен нулю....
Кно может исправить код ?
Или подсказать как получить Все стрики Базы данных ?
Соединиться с базой данной у меня получается без всяких проблем. Вот код:
class FDOOracleClass
{
private static IProviderRegistry FDORegistry = FeatureAccessManager.GetProviderRegistry();
private IConnectionManager FDOManager = FeatureAccessManager.GetConnectionManager();
ProviderCollection pcol = FDORegistry.GetProviders();
private IConnection FDOConnection = FeatureAccessManager.GetConnectionManager().CreateConnection("OSGeo.KingOracle.3.4");
public ConnectionState Constate;
string featureclsname;
// Connect to Oracle
public FDOOracleClass(string username, string password, string servicename, string featureclassname)
{
FDOConnection.ConnectionInfo.ConnectionProperties.SetProperty("USERNAME", username);
FDOConnection.ConnectionInfo.ConnectionProperties.SetProperty("PASSWORD", password);
FDOConnection.ConnectionInfo.ConnectionProperties.SetProperty("SERVICE", servicename);
FDOConnection.ConnectionInfo.ConnectionProperties.SetProperty("OracleSchema", servicename);
FDOConnection.ConnectionInfo.ConnectionProperties.SetProperty("KingFdoClass", featureclassname);
featureclsname = featureclassname;
Constate = FDOConnection.Open();
}
Проблеммы возникают когда я хочу захватить определённую гиометрию
Вот мой код
public GeometryCollection SelectAllQuery()
{
GeometryCollection Geo_Collection = new GeometryCollection();
try {
ISelect select = FDOConnection.CreateCommand(CommandType.CommandType_Select)as ISelect;
select.SetFeatureClassName(featureclsname);
Filter filter = Filter.Parse("ID >= 0");
select.Filter = filter;
ComputedIdentifier computedId = Expression.Parse("(ToString(DateTimeProp) as computedId)") as ComputedIdentifier;
select.PropertyNames.Add(computedId);
IFeatureReader reader = select.Execute();
FgfGeometryFactory gFac = new FgfGeometryFactory();
while (reader.ReadNext())
{
Byte[] Tmppts = reader.GetGeometry("Geometry");
Geo_Collection.Add(gFac.CreateGeometryFromFgf(Tmppts));
}
}
catch(OSGeo.FDO.Common.Exception ex)
{
Console.WriteLine(ex.Message.ToString());
}
return Geo_Collection;
}
Дело в том, что мне не удаёться получить какие либо данные.
Посли компиляции IFeatureReader reader = select.Execute();
В reader равен нулю....
Кно может исправить код ?
Или подсказать как получить Все стрики Базы данных ?
- JEY
- Активный участник
- Сообщения: 228
- Зарегистрирован: 17 июл 2008, 13:42
- Репутация: 1
Re: Работа с FDO в Visual Studio на языке C#
Добрый день!
Извините, что так поздно просмотрел Ваш вопрос...
На первый взгляд в Вашем исходном коде я ошибок не нашел, вроде все правильно. Однако смутила всего одна вещь, а именно:
Попробуйте заменить на:
Если не получится, то напишите мне...
Извините, что так поздно просмотрел Ваш вопрос...
На первый взгляд в Вашем исходном коде я ошибок не нашел, вроде все правильно. Однако смутила всего одна вещь, а именно:
Код: Выделить всё
Filter filter = Filter.Parse("ID >= 0");
Код: Выделить всё
Filter filter = Filter.Parse("FeatID >= 0");
-
- Новоприбывший
- Сообщения: 9
- Зарегистрирован: 29 сен 2009, 11:47
- Репутация: 0
Re: Работа с FDO в Visual Studio на языке C#
Dobryj den', izvinite chto ispol'zuju latinskii bukvy, u menja voznikli problemy s russkoj klaviaturoj.
Soedinenije s Oraclom proizashlo udachno. Probema byla w tom, chto ja peredaval ne pravel'nyje dannyje dlja featureclassname.
Sejchas ja peredaju nazvanije Bazy Dannych, -element Bazy Dannych i straku gde nahoditsja geometrija. -eto vygledit takim obrazom: featureclassname = FDO_TEST~BKM_BAUM~GEOM.
FDO_TEST - nazvanije Bazy Dannych
BKM_Baum - -element w Baze Dannych
GEOM - Odna iz strok Bazy Dannych, gde hranitsja Geometrija w vide Punktov.
U menja voznik takoj vapros, mozhno li s FDO poluchit' wse stroki iz Elementa BKM_Baum?
Naprimer moj Element BKM_Baum soderzhit tri stroki: "Paroda Dereva", "Vysota Derivy" i "GEOM".
Cto by ne zadavat' kazhduju stoku v ruchnuju, a schityvat' ich avtomaticheski.
Dlja Failov est' klass IConnectionInfo s metodoj GetDependetFileNames, pri pomoshchi kotoroj mozhno poluchit' StringCollection so nazvanijami Failov w Papke.
Sushestvuet takoje dlja Baz Dannych?
Soedinenije s Oraclom proizashlo udachno. Probema byla w tom, chto ja peredaval ne pravel'nyje dannyje dlja featureclassname.
Sejchas ja peredaju nazvanije Bazy Dannych, -element Bazy Dannych i straku gde nahoditsja geometrija. -eto vygledit takim obrazom: featureclassname = FDO_TEST~BKM_BAUM~GEOM.
FDO_TEST - nazvanije Bazy Dannych
BKM_Baum - -element w Baze Dannych
GEOM - Odna iz strok Bazy Dannych, gde hranitsja Geometrija w vide Punktov.
U menja voznik takoj vapros, mozhno li s FDO poluchit' wse stroki iz Elementa BKM_Baum?
Naprimer moj Element BKM_Baum soderzhit tri stroki: "Paroda Dereva", "Vysota Derivy" i "GEOM".
Cto by ne zadavat' kazhduju stoku v ruchnuju, a schityvat' ich avtomaticheski.
Dlja Failov est' klass IConnectionInfo s metodoj GetDependetFileNames, pri pomoshchi kotoroj mozhno poluchit' StringCollection so nazvanijami Failov w Papke.
Sushestvuet takoje dlja Baz Dannych?
-
- Новоприбывший
- Сообщения: 9
- Зарегистрирован: 29 сен 2009, 11:47
- Репутация: 0
Re: Работа с FDO в Visual Studio на языке C#
Dobryj Den'
Mne udalos' poluchit' wse Stroki iz Elementa BKM_BAUM, ja -eto s'delal pri pomashchi SQL zaprosa. Wot cod:
Opjat' zhe voznikaet vopros. A mozhno li pri pomashchi FDO poluchit' wse tablizy USERA FDO_TEST ? Odna iz -etich Tabliz i est' BKM_BAUM.
Mne udalos' poluchit' wse Stroki iz Elementa BKM_BAUM, ja -eto s'delal pri pomashchi SQL zaprosa. Wot cod:
Код: Выделить всё
public void DatenbankTabelen()
{
ISQLCommand sqlCommand = FDOConnection.CreateCommand(CommandType.CommandType_SQLCommand) as ISQLCommand;
sqlCommand.SQLStatement = "Select *from BKM_BAUM";
ISQLDataReader reader = sqlCommand.ExecuteReader();
string[] ColumName = new string[100];
int stop = reader.GetColumnCount();
int i = 0;
for (; i < stop; i++)
{
ColumName[i] = reader.GetColumnName(i);
}
for (i = 0; i < stop; i++)
{
Console.WriteLine(ColumName[i]);
}
}
-
- Новоприбывший
- Сообщения: 9
- Зарегистрирован: 29 сен 2009, 11:47
- Репутация: 0
Re: Работа с FDO в Visual Studio на языке C#
Gospoda, pomogite pozhalujsta,
Ja ishchju vozmozhnost' vydat' wse tablizy iz Bazy Dannych pri pomashchi FDO, gde nahodjatsja tol'ko Geomatrija.
Mne udalos' s'delat' eto pri pomashchi SQL, tak wygledit cod
Podskazhite pozhalujsta kak s'delat' tozhe samoje pri pomashchi FDO ?
Ja ishchju vozmozhnost' vydat' wse tablizy iz Bazy Dannych pri pomashchi FDO, gde nahodjatsja tol'ko Geomatrija.
Mne udalos' s'delat' eto pri pomashchi SQL, tak wygledit cod
Код: Выделить всё
public void DatenbankTabelen()
{
ISQLCommand sqlCommand = FDOConnection.CreateCommand(CommandType.CommandType_SQLCommand) as ISQLCommand;
sqlCommand.SQLStatement ="select SDO_TABLE_NAME from MDSYS.SDO_GEOM_METADATA_TABLE where SDO_OWNER='FDO_TEST'";
ISQLDataReader reader = sqlCommand.ExecuteReader();
while (reader.ReadNext())
{
Console.WriteLine(reader.GetString("SDO_TABLE_NAME"));
}
}
Podskazhite pozhalujsta kak s'delat' tozhe samoje pri pomashchi FDO ?
- JEY
- Активный участник
- Сообщения: 228
- Зарегистрирован: 17 июл 2008, 13:42
- Репутация: 1
Re: Работа с FDO в Visual Studio на языке C#
Приветствую еще раз! Ответ на Ваш вопрос находится здесь. Или я ошибаюсь?
-
- Новоприбывший
- Сообщения: 3
- Зарегистрирован: 24 фев 2010, 19:26
- Репутация: 0
- Контактная информация:
Re: Работа с FDO в Visual Studio на языке C#
Пытаюсь хоть как-нибудь достучаться до FDO... Но он генерирует "странное" исключение.
1. Скачала с сайта http://fdo.osgeo.org/ dll-ки FDO 3.5.0
2. Создала новый проект в MSVS 2008 на C#, подключила библиотеки
OSGeo.FDO.dll
OSGeo.FDO.Common.dll
OSGeo.FDO.Geometry.dll
OSGeo.FDO.Spatial.dll
3. Пыталась обратиться к методам FDO, например:
IProviderRegistry fdoRegistry = FeatureAccessManager.GetProviderRegistry();
или
IConnectionManager fdoManager = FeatureAccessManager.GetConnectionManager();
Выдаёт один и тот же Exception, независимо от действий:
"SEHException was unhandled. Внешний компонент создал исключение"
Перерыла весь интернет, перечитала все Essential, FAQ, cookbook, DeveloperGUIDE, но ничего не смогла обнаружить, что помогло бы в решении моей проблемы.
Конечная цель - получить доступ к SHP-файлу. Может у кого-то есть примеры?
Помогите, пожалуйста...?
Заранее большое спасибо!
1. Скачала с сайта http://fdo.osgeo.org/ dll-ки FDO 3.5.0
2. Создала новый проект в MSVS 2008 на C#, подключила библиотеки
OSGeo.FDO.dll
OSGeo.FDO.Common.dll
OSGeo.FDO.Geometry.dll
OSGeo.FDO.Spatial.dll
3. Пыталась обратиться к методам FDO, например:
IProviderRegistry fdoRegistry = FeatureAccessManager.GetProviderRegistry();
или
IConnectionManager fdoManager = FeatureAccessManager.GetConnectionManager();
Выдаёт один и тот же Exception, независимо от действий:
"SEHException was unhandled. Внешний компонент создал исключение"
Перерыла весь интернет, перечитала все Essential, FAQ, cookbook, DeveloperGUIDE, но ничего не смогла обнаружить, что помогло бы в решении моей проблемы.
Конечная цель - получить доступ к SHP-файлу. Может у кого-то есть примеры?
Помогите, пожалуйста...?
Заранее большое спасибо!
Последний раз редактировалось MaZaika 25 мар 2010, 12:19, всего редактировалось 1 раз.
- JEY
- Активный участник
- Сообщения: 228
- Зарегистрирован: 17 июл 2008, 13:42
- Репутация: 1
Re: Работа с FDO в Visual Studio на языке C#
Похоже на то, что библиотеки FDO у Вас не в полной комплектации. Опишите последовательность Ваших действий и приложите фрагменты исходного кода, в которых возникает данная ошибка.
-
- Новоприбывший
- Сообщения: 3
- Зарегистрирован: 24 фев 2010, 19:26
- Репутация: 0
- Контактная информация:
Re: Работа с FDO в Visual Studio на языке C#
Спасибо большое за помощь!Вы оказались правы
1. Я подключала 4 библиотеки FDO 3.5.0 (хотя в папке с этими библиотеками был ещё целый ряд, которые не удалось явно подключить к проекту, вылетала ошибка). Из всех подключились только вот эти:
OSGeo.FDO.dll
OSGeo.FDO.Common.dll
OSGeo.FDO.Geometry.dll
OSGeo.FDO.Spatial.dll
2. Написала строчку
IProviderRegistry fdoRegistry = FeatureAccessManager.GetProviderRegistry();
Постоянно вылетал Exception:
"SEHException was unhandled. Внешний компонент создал исключение"
3. Как выяснилось, необходимо было дополнительно скопировать все остальные библиотеки в папку Bin/Debug проекта. После того, как скопировала, всё заработало...
1. Я подключала 4 библиотеки FDO 3.5.0 (хотя в папке с этими библиотеками был ещё целый ряд, которые не удалось явно подключить к проекту, вылетала ошибка). Из всех подключились только вот эти:
OSGeo.FDO.dll
OSGeo.FDO.Common.dll
OSGeo.FDO.Geometry.dll
OSGeo.FDO.Spatial.dll
2. Написала строчку
IProviderRegistry fdoRegistry = FeatureAccessManager.GetProviderRegistry();
Постоянно вылетал Exception:
"SEHException was unhandled. Внешний компонент создал исключение"
3. Как выяснилось, необходимо было дополнительно скопировать все остальные библиотеки в папку Bin/Debug проекта. После того, как скопировала, всё заработало...
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 10 гостей