Столбец Geometry: STGeomFromText и SRID (что такое SRID?)

Предупреждение: недопустимое смещение строки 'XXX'

Это происходит, когда вы пытаетесь получить доступ к элементу массива с синтаксисом с квадратной скобкой, но вы делаете это по строке, а не по массиву, поэтому операция явно не имеет смысла .

Пример:

$var = "test";
echo $var["a_key"];

Если вы считаете, что переменная должна быть массивом, см., где она появляется и исправить там проблему.

25
задан user247702 16 April 2014 в 06:48
поделиться

5 ответов

Таким образом, я закончил тем, что вчера говорил с экс-военным парнем, который был специалистом по радару/отображению. В основном он знал точно, каков тот номер (4326) был, куда он прибыл из, и почему это там.

Это - промышленный стандарт для вычислительной географии. Проблема состоит в том, что земля не является идеальной сферой (она выпирает в середине), и счета SRID 4326 на это.

, Поскольку я заявил, таблица sys.spatial_reference_systems приводит весь код и каковы они. Но короткая версия - то, что Вы действительно только собираетесь использовать 4326, если у Вас нет очень определенной причины использовать что-то другое.

19
ответ дан Ken Smith 28 November 2019 в 20:38
поделиться

Существует много систем для отображения земли. Например, Вы хотите отобразить некоторое состояние в США. Можно установить самую юго-восточную точку как 0,0 и отобразить все другие пространственные координаты согласно этой точке. С другой стороны, можно хотеть отобразить некоторые пространственные данные, которые охватывают разнообразный. В любом случае необходимо выбрать некоторую точку в качестве 0,0. Кроме того, необходимо выбрать своего рода измерительную единицу: miles/kilometers/degrees/some другая волшебная единица, которая подходит Вам лучше. За эти годы много таких систем, где разработано. У каждого есть ее собственная нулевая точка, ее собственные координаты, ее собственные правила о том, если земля является плоской или нет. SRID или SRS являются идентификатором такой системы. Используя этот идентификатор можно отобразить точку, выраженную в одной системе другой системе, хотя иногда это включает некоторую довольно сложную математику.

И приблизительно 4 326 SRID. Это также назвало "WGS 84" ( http://en.wikipedia.org/wiki/World_Geodetic_System ) системой. Это - наиболее распространенная система для представления точки на сферическом (не плоский) земля. Это использует градус, минуту, вторую нотацию и ее координаты X и Y обычно называют широтой и долготой.

Наиболее используемую несферическую наземную проекцию называют UTM. Можно читать об этом здесь: http://en.wikipedia.org/wiki/Universal_Transverse_Mercator_coordinate_system

Так или иначе, поскольку долго Вы не делаете никаких пространственных преобразований от одной системы до другого, Вы действительно не заботитесь о системе что Вы использование данных.

17
ответ дан SvenAelterman 28 November 2019 в 20:38
поделиться

SRID = пространственный ссылочный идентификатор

координаты должны использовать тот же SRID, чтобы быть сопоставимыми. иначе Вы закончили бы тем, что сравнили километры и мили. или что-то подобное.

16
ответ дан Mladen Prajdic 28 November 2019 в 20:38
поделиться

Я нашел этот веб-сайт: http://spatialreference.org/ref/epsg/4326/ весьма полезным для понимания SRID, который вы собираетесь использовать. Он предоставляет удобную карту, некоторую информацию об ограничивающем поле и другие ссылки.

Для других SRID просто измените цифры в конце URL-адреса на то, что вам нужно.

2
ответ дан 28 November 2019 в 20:38
поделиться

Возвращаемое расстояние зависит от "Идентификатора пространственной ссылки (SRID)", который вы определяете для своих географических типов.

В приведенном ниже примере используется SRID по умолчанию, равный 4336, см. второй аргумент STGeomFromText. Это означает, что возвращаемое расстояние указано в метрах. Вы найдете его, запросив представление каталога spatial_reference_systems, т.е. выберите srs.unit_of_measure из sys.spatial_reference_systems как srs, где srs.spatial_reference_id = 4326

В качестве альтернативы для STGeomFromText, вы можете использовать parse, который предполагает SRID из 4326, и вам не нужно указывать его явно.

При расчете расстояния между двумя точками необходимо использовать один и тот же SRID для обоих географических типов, иначе вы получите ошибку. Пример:

DECLARE @address1 GEOGRAPHY
DECLARE @address2 GEOGRAPHY
DECLARE @distance float
SET @address1 = GEOGRAPHY::STGeomFromText ('point(53.046908 -2.991673)',4326)
SET @address2 = GEOGRAPHY::STGeomFromText ('point(51.500152 -0.126236)',4326)
SET @distance = @address1.STDistance(@address2)
SELECT @distance --this is the distance in meters
1
ответ дан 28 November 2019 в 20:38
поделиться
Другие вопросы по тегам:

Похожие вопросы: