Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 linestring с привязкой ко времени  [new]
dimonovych
Member

Откуда:
Сообщений: 17
Здавстыуйте.
Недавно открыл для себя пространственные обьекты - токазалась очень удобная штука.
Только не нашел способа как привязать пространственны данные к временным.

Например
DECLARE  @p GEOGRAPHY
        ,@l GEOGRAPHY
        ,@gi GEOGRAPHY

 SET @p = GEOGRAPHY::Parse('POLYGON((23.102405322446394 49.5931649741033,23.101418269528914 49.59310933769719,23.10051704729991 49.59299806469463,23.099444163693953 49.59277551792789,23.098199618711043 49.59288679143817,23.09802795733409 49.59344315518183,23.09772754992442 49.594138600936795,23.09802795733409 49.594639315740295,23.09952999438243 49.594945305589576,23.100602877988386 49.59569636344419,23.102190745725203 49.59580763029083,23.102662814511824 49.5948618540029,23.102190745725203 49.594416776462275,23.10227657641368 49.59380478821195,23.102405322446394 49.5931649741033))').ReorientObject()
 SET @l = GEOGRAPHY::STGeomFromText('LINESTRING(23.09425140704112 49.596280511557 1601881195, 23.094895137204695 49.59500093990138  1601881225, 23.095925105466414 49.593971694859974 1601881255, 23.097126735105086 49.59324842859344 1601881285, 23.09802795733409 49.59285897308441 1601881315, 23.098628772153425 49.593888241607345 1601881345, 23.099572909726668 49.593888241607345 1601881375, 23.100388301267195 49.593888241607345 1601881405, 23.10104678358035 49.59337882594847 1601881435, 23.101705265893507 49.59303631481794 1601881465, 23.102593077077437 49.59318583773922 1601881495, 23.103596223249006 49.59326233766124 1601881525, 23.104315055264998 49.59363788099276 1601881555, 23.104808581723738 49.593776970381754 1601881585)',4326)

SET @gi = @l.STIntersection (@p)


здесь @p - полигон, @l - линия (добавил Z надеясь хранить там время), @gi - вхождение линии в полигон.
в реальности - это координаты трекера.
Задача - узнать время вьезда/выезда из контрольной зоны.
Пока все это делается обработкой индивидульно всех координат - в зоне/не в зоне и высчитывается время.

Мне показалось что было бы гораздо проще все считать, если бы точки в linestring сразу время привязывать ко времени, поэтому я запихнул unixtime в Z ,надеясь что @l.STIntersection (@p) вернет мне пересечение вместе с Z координатами, но фигушки.

Отсюда вопрос - как получить номер точки @l.STIntersection (@p).STStartPoint ( ) в обьекте @l?

или возможно у кого то есть другие идеи на сей счет?
буду очень благодарен за помощь.
5 окт 20, 14:59    [22209123]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить