Проблема с чтением STGeomCollFromWKB из varbinary (max) - PullRequest
3 голосов
/ 30 мая 2011

Я импортировал csv-файл, содержащий информацию о пространственной области в varchar, затем преобразовал значения varchar (max) в varbinary (max), добавив «0x» к значениям varchar (max) перед преобразованием.К тому времени, кроме «0x» в начале, данные в столбце varbinary (max) выглядят точно так же, как и столбец varchar (max), преобразованный в текст.

Теперь я запускаю следующий скрипт:

select geometry::STGeomCollFromWKB(wkb, 4326) from dbo.MyTable

где WKB - столбец varbinary (max).Запуск вышеуказанного скрипта приводит к ошибке: ' Недопустимый бинарный вход (WKB) '

Источник данных взят из Open Street Map, поэтому, несомненно, это правильная областьданные.Поэтому я предполагаю, что в том, что я делаю, должно быть что-то не так, или мне не хватает некоторого момента для преобразования WKB в тип данных геометрии.

Может кто-нибудь помочь, пожалуйста?

1 Ответ

1 голос
/ 12 июля 2011

Я предполагаю, что проблема заключается в том, что при преобразовании данных varchar в varbinary вы преобразовываете фактическое символьное представление двоичных данных, а не просто меняете тип на двоичные.

Например, если у вас есть данные 0xDEADBEEF в столбце varchar, тогда выполните convert (varbinary (max), 'DEADBEEF') преобразует представления символов ascii в двоичные.

Вместо этого вы хотите преобразовать шестнадцатеричную строку в двоичную, что возможно с помощью параметра стиля convert.

SELECT convert (varbinary (max), 'DEADBEEF', 2)

должен делать то, что вы хотите, чтобы преобразовать ваши данные varchar wkb в настоящий двоичный файл.

...