powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Как работать с данными Geography?
16 сообщений из 16, страница 1 из 1
Как работать с данными Geography?
    #38169532
Фотография Gena928
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
День добрый,

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

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

Спасибо.
...
Рейтинг: 0 / 0
Как работать с данными Geography?
    #38169561
Фотография pation
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
Как работать с данными Geography?
    #38169574
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В записи 55.42 дробная часть представляет собой 42% от единицы
В записи 55° 25' число 25 представляет собой 25 минут из 60, что составляет те же 42%.
...
Рейтинг: 0 / 0
Как работать с данными Geography?
    #38169596
beg-in-er
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
Как работать с данными Geography?
    #38169610
Фотография Gena928
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
Как работать с данными Geography?
    #38169613
Фотография Gena928
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
beg-in-er,
thanks!
...
Рейтинг: 0 / 0
Как работать с данными Geography?
    #38169692
Фотография 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
)


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

Передавать данные в 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
Период между сообщениями больше года.
Как работать с данными Geography?
    #39600649
Vlad__i__mir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
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
Как работать с данными Geography?
    #39600652
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vlad__i__mirнашли тип SqlGeography?
Тут. Если у вас д именно сиквел.
https://msdn.microsoft.com/ru-ru/library/microsoft.sqlserver.types.sqlgeography.aspx
...
Рейтинг: 0 / 0
Как работать с данными Geography?
    #39600671
Vlad__i__mir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
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
Как работать с данными Geography?
    #39600689
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vlad__i__mir,
Мож. NuGet надо добавить дополнительно.
Пробуй.
...
Рейтинг: 0 / 0
Как работать с данными Geography?
    #39600702
Vlad__i__mir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
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
Как работать с данными Geography?
    #39600720
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vlad__i__mir,
Инернет это большая свалка. Мало ли какой Г. код там есть.
Иди от задачи и ошибки в стеке при ее достижении.
Нужен ОРМ бери хибер или EF.
Не нужен? Бери comand.runSql.
...
Рейтинг: 0 / 0
Как работать с данными Geography?
    #39600726
Vlad__i__mir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
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
Как работать с данными Geography?
    #39600750
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vlad__i__mir,
Тему по хиберу заведи.
...
Рейтинг: 0 / 0
16 сообщений из 16, страница 1 из 1
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Как работать с данными Geography?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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