Я разрабатываю таблицу в SQL Server 2008, в которой будет храниться список пользователей и координаты Google Maps (долгота и широта).
Нужны ли мне два поля или можно с одним?
Какой тип данных лучше (или чаще всего) использовать для хранения такого рода данных?
Я не знаю ответа для SQL Server, но ...
В MySQL сохраните его как
FLOAT( 10, 6 )
Это официальная рекомендация из документации для разработчиков Google .
источник
lat
иlng
превосходят по производительностиgeorgraphy
даже с индексами высокой плотности в SQL 2014. Например: найти все точки внутри прямоугольника. Только я не уверен, я вижу, что в Google Maps теперь используется 7 вместо 6 цифр?Как я это делаю: я сохраняю широту и долготу, а затем у меня есть третий столбец, который является автоматически производным типом географии первых двух столбцов. Таблица выглядит так:
Это дает вам гибкость пространственных запросов в столбце geoPoint, и вы также можете извлекать значения широты и долготы по мере необходимости для отображения или извлечения для целей csv.
источник
Point
вместоSTGeomFromText
. Например:[geography]::Point([Latitude], [Longitude], 4326)
.Ненавижу противоречить тем, кто сказал: «Вот новый тип, давайте воспользуемся им». Новые пространственные типы SQL Server 2008 имеют некоторые преимущества, а именно эффективность, однако вы не можете слепо сказать, что всегда используйте этот тип. Это действительно зависит от более серьезных проблем с картиной.
Например, интеграция. Этот тип имеет эквивалентный тип в .Net - но как насчет взаимодействия? А как насчет поддержки или расширения старых версий .Net? Как насчет того, чтобы раскрыть этот тип на уровне сервиса для других платформ? Что насчет нормализации данных - может быть, вас интересуют широта или долгота как отдельные части информации. Возможно, вы уже написали сложную бизнес-логику для обработки долгого и долгого времени.
Я не говорю, что вам не следует использовать пространственный тип - во многих случаях вам нужно. Я просто говорю, что вам следует задать еще несколько критических вопросов, прежде чем идти по этому пути. Чтобы я мог наиболее точно ответить на ваш вопрос, мне нужно было больше узнать о вашей конкретной ситуации.
Хранение long / lat отдельно или в пространственном типе - оба жизнеспособных решения, и одно может быть предпочтительнее другого в зависимости от ваших собственных обстоятельств.
источник
Что вы хотите сделать, так это сохранить широту и долготу как новый пространственный тип SQL2008 -> GEOGRAPHY.
Вот скриншот стола, который у меня есть.
альтернативный текст http://img20.imageshack.us/img20/6839/zipcodetable.png
В этой таблице у нас есть два поля, в которых хранятся географические данные.
Основная причина, по которой вы хотите сохранить его в базе данных как тип GEOGRAPHY, заключается в том, чтобы вы могли затем использовать все методы SPATIAL из него -> например. Точка в поли, расстояние между двумя точками и т. Д.
Кстати, мы также используем Google Maps API для получения данных о широте и долготе и сохранения их в нашей базе данных Sql 2008, поэтому этот метод действительно работает.
источник
SQL Server поддерживает пространственную информацию. Вы можете увидеть больше на http://www.microsoft.com/sqlserver/2008/en/us/spatial-data.aspx .
В качестве альтернативы вы можете сохранить информацию в виде двух основных полей, обычно float является стандартным типом данных, сообщаемым большинством устройств и достаточно точным в пределах одного-двух дюймов - более чем достаточно для Google Maps.
источник
широта и долгота из карт Google должны храниться как данные Point (обратите внимание на заглавную букву P) на сервере SQL в соответствии с типом данных geography.
Предполагая, что ваши текущие данные хранятся в таблице
Sample
как varchar под столбцами,lat
иlon
запрос ниже поможет вам преобразовать в географиюPS: В следующий раз, когда вы сделаете выбор в этой таблице с географическими данными, помимо вкладки «Результаты» и «Сообщения», вы также получите вкладку «Пространственные результаты», как показано ниже, для визуализации.
источник
Если вы используете Entity Framework 5 <, вы можете использовать
DbGeography
. Пример из MSDN:https://msdn.microsoft.com/en-us/library/hh859721(v=vs.113).aspx
То, с чем я боролся, когда я начал использовать,
DbGeography
былоcoordinateSystemId
. См. Ответ ниже, где вы найдете прекрасное объяснение и исходный код приведенного ниже кода.https://stackoverflow.com/a/25563269/3850405
источник
Если вы просто собираетесь подставить его в URL-адрес, я полагаю, подойдет одно поле, поэтому вы можете сформировать URL-адрес, например
но поскольку это два фрагмента данных, я бы сохранил их в отдельных полях
источник
Сохраните оба объекта как float и используйте в них уникальные ключевые слова. I.em
источник
House A
, и переедет в негоHouse B
. Вскоре Боб не сможет сохранить свой адрес (местоположение), потому что Алиса еще не обновила свой адрес - или никогда не обновит.