Гость
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Как работать с данными Geography? / 16 сообщений из 16, страница 1 из 1
28.02.2013, 13:55
    #38169532
Gena928
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как работать с данными Geography?
День добрый,

надо создать win forms приложение, которое получает и сохраняет данные в формате geography (SQL Server 2008). Кто-нибудь работал с этим? Поделитесь ссылочкой на примеры пожалуйста.

Что интересует:
- какой тип данных в C# соответствует geography в SQL?
- как такие данные можно прочитать через SQLDatareader и записать обратно?
- как конвертировать? Например вот это: +55° 25' 39.24", +37° 33' 15.84" соответствует вот этому: 55.424727,37.559309. Как это перегоняется друг в друга?

Спасибо.
...
Рейтинг: 0 / 0
28.02.2013, 14:03
    #38169561
pation
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как работать с данными Geography?
Gena928,

http://msdn.microsoft.com/ru-ru/library/cc280766%28v=sql.100%29.aspx] http://msdn.microsoft.com/ru-ru/library/cc280766%28v=sql.100%29.aspx
...
Рейтинг: 0 / 0
28.02.2013, 14:06
    #38169574
Antonariy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как работать с данными Geography?
В записи 55.42 дробная часть представляет собой 42% от единицы
В записи 55° 25' число 25 представляет собой 25 минут из 60, что составляет те же 42%.
...
Рейтинг: 0 / 0
28.02.2013, 14:15
    #38169596
beg-in-er
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как работать с данными Geography?
Gena928,

1) 25' 39.24"=(25*60+39.24)/3600=0,427566
2) 0,427566*60=25,65396=25'
(25,65396-25)*60=39,2376"
...
Рейтинг: 0 / 0
28.02.2013, 14:23
    #38169610
Gena928
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как работать с данными Geography?
Antonariy,

Супер. Спасибо большое. Значит подойдет Decimal в C#.
А как добавить значения в SQL базу данных? Pation написал пример, но там используется 4 параметра.
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
CREATE TABLE SpatialTable 
    ( id int IDENTITY (1,1),
    GeogCol1 geography, 
    GeogCol2 AS GeogCol1.STAsText() );
GO

INSERT INTO SpatialTable (GeogCol1)
VALUES (geography::STGeomFromText('LINESTRING(47.656 -122.360, 47.656 -122.343)', 4326));



у нас 2. Какое там соответствие?
...
Рейтинг: 0 / 0
28.02.2013, 14:24
    #38169613
Gena928
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как работать с данными Geography?
beg-in-er,
thanks!
...
Рейтинг: 0 / 0
28.02.2013, 15:03
    #38169692
Gena928
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как работать с данными Geography?
Кажется разобрался.

У класса SqlGeography есть свойство SqlGeography.Point, с помощью которого его можно конструировать.

Constructs a SqlGeography instance representing a Point instance from its x and y values and a spatial reference ID (SRID).
Код: c#
1.
2.
3.
4.
5.
6.
[SqlMethodAttribute(IsDeterministic = true, IsPrecise = false)]
public static SqlGeography Point(
	double latitude,
	double longitude,
	int srid
)


Дальше это все может идти как параметр для хранимой процедуры.
...
Рейтинг: 0 / 0
01.03.2013, 08:52
    #38170498
Gena928
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как работать с данными Geography?
А нет, ошибся.

Передавать данные в SQL надо как float. А дальше уже в SQL server преобразовывать в SqlGeography.
Код: sql
1.
2.
3.
DECLARE @g geography; 
SET @g = geography::Point(47.65100, -122.34900, 4326)
SELECT @g.ToString();
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
12.02.2018, 15:13
    #39600649
Vlad__i__mir
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как работать с данными Geography?
Gena928Кажется разобрался.

У класса SqlGeography есть свойство SqlGeography.Point, с помощью которого его можно конструировать.

Constructs a SqlGeography instance representing a Point instance from its x and y values and a spatial reference ID (SRID).
Код: c#
1.
2.
3.
4.
5.
6.
[SqlMethodAttribute(IsDeterministic = true, IsPrecise = false)]
public static SqlGeography Point(
	double latitude,
	double longitude,
	int srid
)


Дальше это все может идти как параметр для хранимой процедуры.

Скажите пожалуйста, а как Вы в C# нашли тип SqlGeography?
Когда я пытаюсь его ввести он мне выдает ошибку и при этом отсутствует список подключаемых директорий.
...
Рейтинг: 0 / 0
12.02.2018, 15:21
    #39600652
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как работать с данными Geography?
Vlad__i__mirнашли тип SqlGeography?
Тут. Если у вас д именно сиквел.
https://msdn.microsoft.com/ru-ru/library/microsoft.sqlserver.types.sqlgeography.aspx
...
Рейтинг: 0 / 0
12.02.2018, 15:37
    #39600671
Vlad__i__mir
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как работать с данными Geography?
Petro123Vlad__i__mirнашли тип SqlGeography?
Тут. Если у вас д именно сиквел.
https://msdn.microsoft.com/ru-ru/library/microsoft.sqlserver.types.sqlgeography.aspx

Пытаюсь подключить директиву "using Microsoft.SqlServer.Types" не даёт. "Microsoft.SqlServer" подключить даёт, а дальше предлагает только Server
...
Рейтинг: 0 / 0
12.02.2018, 15:57
    #39600689
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как работать с данными Geography?
Vlad__i__mir,
Мож. NuGet надо добавить дополнительно.
Пробуй.
...
Рейтинг: 0 / 0
12.02.2018, 16:18
    #39600702
Vlad__i__mir
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как работать с данными Geography?
Petro123Vlad__i__mir,
Мож. NuGet надо добавить дополнительно.
Пробуй.

Благодарю! У меня не было этого пакета, через NuGet установил и всё заработало.

Скажите вот я создал в классе поле данного типа:

Код: c#
1.
2.
3.
4.
5.
6.
class GeographicalKoordinates
    {
        public virtual int Id_GeographicalKoordinates { get; set;}
        public virtual SqlGeography Koordinate { get; set; }

    }



Теперь я смогу оперировать ими с помощью свойств описанных в вашей ссылки ( https://msdn.microsoft.com/ru-ru/library/microsoft.sqlserver.types.sqlgeography.aspx)?

Или нужно ещё что-то сделать?

Для чего нужен вот этот код приведённый по этой ссылки?
Код: c#
1.
2.
3.
4.
5.
6.
[SerializableAttribute]
[CLSCompliantAttribute(true)]
[SqlUserDefinedTypeAttribute(Format.UserDefined, IsByteOrdered = false, 
	MaxByteSize = -1, IsFixedLength = false)]
public sealed class SqlGeography : INullable, IBinarySerialize, 
	ISqlSpatialGridIndexable
...
Рейтинг: 0 / 0
12.02.2018, 17:07
    #39600720
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как работать с данными Geography?
Vlad__i__mir,
Инернет это большая свалка. Мало ли какой Г. код там есть.
Иди от задачи и ошибки в стеке при ее достижении.
Нужен ОРМ бери хибер или EF.
Не нужен? Бери comand.runSql.
...
Рейтинг: 0 / 0
12.02.2018, 17:17
    #39600726
Vlad__i__mir
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как работать с данными Geography?
Petro123,
Взял хибер, вот не пойму достаточно ли просто прописать тип поля или ещё нужно прописать отдельно классы, как это делали Вы вот здесь?
Код: c#
1.
2.
3.
4.
5.
6.
[SqlMethodAttribute(IsDeterministic = true, IsPrecise = false)]
public static SqlGeography Point(
	double latitude,
	double longitude,
	int srid
)



Первый раз пытаюсь это сделать.
...
Рейтинг: 0 / 0
12.02.2018, 18:10
    #39600750
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как работать с данными Geography?
Vlad__i__mir,
Тему по хиберу заведи.
...
Рейтинг: 0 / 0
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Как работать с данными Geography? / 16 сообщений из 16, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]