Studying in IT
Comments 11
0
Отличный вывод! Теперь вам не надо ждать, когда вас спасут.
А вот этим кадастровым инженерам надо, ибо большинство из них не владеет sql, у них нет лицензий на MsSql и доп. инструменты (которые еще нужно изучать)
С таким же успехом они могут написать/подправить парсер xml на своем любимом языка программирования.
0
у них нет лицензий на MsSql

Нет? А если найду?
У них наверняка есть 1С и скорей всего она как раз работает на MS SQL Server
0
Что-то я не совсем понял. То есть люди писали конвертеры напрямую в требуемые форматы, а вы создали ещё одно промежуточное решение, которое также зависимо от изменений в структуре xml?
+2
Я взял бесплатные Express версии и решил задачу — обработка данных. Эти древние форматы просто не нужны — вся работа прекрасно делается в СУБД на голом SQL'е
0
Если вдаваться в занудство, то .shp будет помоложе sql :). База хороша, но зачем разводить фанатизм, база это хранение большого кол-ва данных, а shp — разработка, различные преобразования.
0
вот у человека xml в 200 мегов, и таких файлов может быть несколько, а работать нужно сразу со всеми — это будет очень не спешный процесс
0
Только Ваши запросы работать не всегда корректно будут, т.к. нужно учитывать порядок обхода контура, учитывать «бублики», многоконтурные участки. Еще есть понятие подучастков и вашим запросом Вы получите координаты по ним и все будет в одной куче, отстроить ничего не получится. также Росреестр выдает координаты как точками, так и линиями и все это нужно учитывать. Задача не такая простая, как может показаться на первый взгляд. Но в целом подход правильный, просто в реальной жизни его реализация будет более сложная.
0
конечно, но я хотел лишь продемонстрировать возможность и не хотел чересчур усложнять…
0

Хотелось бы добавить, что работу с xml в sql server можно несколько упростить двумя вещами:


  • использовать * вместо неймспейсов:


    SELECT @Xdoc.value('/*:*[1]/@CadastralNumber', 'nvarchar(max)') as CadastralNumber, 
    [dbo].[SpatialElementToLineString](Parcel.query('.')) as geom 
    FROM @Xdoc.nodes('//*:SpatialElement') col(Parcel);

  • использовать латеральный джоин ( в sql server — это cross apply / outer apply)


    select t.id, X.tag1, X.tag2 
    from table t cross apply ( select t.xml.value('//*:tag1') tag1, 
                                      t.xml.value('//*:tag2') tag2 ) X

Only those users with full accounts are able to leave comments.  , please.