Как в QGIS экспортировать линейный шейп в CSV со всеми атрибутами?
- Natalia Novoselova
- Гуру
- Сообщения: 3020
- Зарегистрирован: 15 янв 2013, 20:14
- Репутация: 69
- Ваше звание: Лиса
- Откуда: **
- Контактная информация:
Как в QGIS экспортировать линейный шейп в CSV со всеми атрибутами?
Для решения другой задачи (Как загрузить линейные высоты и DEM в RecMin?)
нужно линейный шейп (в приложении Cada5m.shp) правильно экспортировать в точечный CSV файл (с разделителем запятая), но таким образом, чтобы там сохранился атрибут высоты, то есть было записано:
ID, Long, Lat, Hight
Как это есть в исходном шейпе
Нашла 2 способа как делать сохранять шейп в CSV, и оба выдают какую-то чушь.
1. Если просто пересохранять шейп и выбрать CSV в формате файлов, то CSV получается вообще без атрибутов – ни координат, ни высот.
2. Если делать через панель управления MMQGIS - Import\Export - Geometry export to CSV file, то в CSV записывает все, кроме поля высоты, который он зачем-то выкидывает в отдельный файл.
Если его открывать – это будет таблица, которую непонятно как вклеивать в таблицу CSV назад, так как записывает не на всю длину, а по значениям поля ID (приложила что у меня получилось после сохранения таким образом - cada5m_CSV_v7.csv - файл CSV и cada5m_CSV_v7at файл с атрибутами высоты, которые он зачем-то записал отдельно.
И никаких способов записать это иначе или просто объединить, чтобы в итоге получилась полная таблица - с координатами и высотой я не нашла.
Как можно нормально получить CSV файл со всеми атрибутами? Или какую операцию по соединению таблиц полученных в MMQGIS нужно выполнить?
нужно линейный шейп (в приложении Cada5m.shp) правильно экспортировать в точечный CSV файл (с разделителем запятая), но таким образом, чтобы там сохранился атрибут высоты, то есть было записано:
ID, Long, Lat, Hight
Как это есть в исходном шейпе
Нашла 2 способа как делать сохранять шейп в CSV, и оба выдают какую-то чушь.
1. Если просто пересохранять шейп и выбрать CSV в формате файлов, то CSV получается вообще без атрибутов – ни координат, ни высот.
2. Если делать через панель управления MMQGIS - Import\Export - Geometry export to CSV file, то в CSV записывает все, кроме поля высоты, который он зачем-то выкидывает в отдельный файл.
Если его открывать – это будет таблица, которую непонятно как вклеивать в таблицу CSV назад, так как записывает не на всю длину, а по значениям поля ID (приложила что у меня получилось после сохранения таким образом - cada5m_CSV_v7.csv - файл CSV и cada5m_CSV_v7at файл с атрибутами высоты, которые он зачем-то записал отдельно.
И никаких способов записать это иначе или просто объединить, чтобы в итоге получилась полная таблица - с координатами и высотой я не нашла.
Как можно нормально получить CSV файл со всеми атрибутами? Или какую операцию по соединению таблиц полученных в MMQGIS нужно выполнить?
- Вложения
-
- cada5m_CSV_v7at.csv
- (9.39 КБ) 549 скачиваний
-
- cada 5m.zip
- (496.64 КБ) 266 скачиваний
-
- Гуру
- Сообщения: 5286
- Зарегистрирован: 09 апр 2010, 19:30
- Репутация: 1015
- Ваше звание: просто мимо прохожу
- Откуда: Ё-бург
- Natalia Novoselova
- Гуру
- Сообщения: 3020
- Зарегистрирован: 15 янв 2013, 20:14
- Репутация: 69
- Ваше звание: Лиса
- Откуда: **
- Контактная информация:
-
- Гуру
- Сообщения: 5286
- Зарегистрирован: 09 апр 2010, 19:30
- Репутация: 1015
- Ваше звание: просто мимо прохожу
- Откуда: Ё-бург
Re: Как в QGIS экспортировать линейный шейп в CSV со всеми атрибутами?
Много лет назад я говорил учить SQL...
1. Загрузим слой в БД
2. Создадим функцию
3. Создадим таблицу
4. Выполним запрос с курсором
5. Выполним запрос
и сохраним результат как .csv
Глупо полагать, что найдётся кнопка на все случаии жизни - надо учится самому их создавать
1. Загрузим слой в БД
2. Создадим функцию
Код: Выделить всё
CREATE FUNCTION [dbo].[GetPoints]
(
@lgeom as GEOMETRY
)
RETURNS @res TABLE(egeom GEOMETRY)
AS
begin
declare @loop int;
set @loop = @lgeom.STNumPoints()
while @loop > 0
begin
insert into @res values(@lgeom.STPointN(@loop))
set @loop = @loop -1
end
RETURN;
end;
Код: Выделить всё
CREATE TABLE [dbo].[res1](
[id] [int] NULL,
[geom] [geometry] NULL,
[height_m] [numeric](9, 0) NULL
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
Код: Выделить всё
DECLARE @id int, @g geometry, @height float
DECLARE _cursor CURSOR LOCAL FOR
SELECT [ogr_fid], [ogr_geometry], [height_m]
FROM [test1].[dbo].[curvas de nivel_eq5m]
OPEN _cursor
FETCH NEXT FROM _cursor INTO @id, @g, @height
WHILE @@FETCH_STATUS=0
BEGIN
insert into res1(id, geom, height_m) select @id, egeom , @height from [GetPoints](@g);
FETCH NEXT FROM _cursor
INTO @id, @g , @height
END
CLOSE _cursor
DEALLOCATE _cursor
Код: Выделить всё
SELECT [id],[geom].STX as x, [geom].STY as y,[height_m] FROM [test1].[dbo].[res1]
Глупо полагать, что найдётся кнопка на все случаии жизни - надо учится самому их создавать
- Игорь Белов
- Гуру
- Сообщения: 2229
- Зарегистрирован: 04 янв 2011, 22:00
- Репутация: 1501
- Откуда: Казань
Re: Как в QGIS экспортировать линейный шейп в CSV со всеми атрибутами?
[Vector] → [Geometry Tools] → [Extract Vertices…]Natalia Novoselova писал(а): ↑28 мар 2019, 18:31нужно линейный шейп … правильно экспортировать в точечный CSV файл
Результат из шейпфайла пересохранить в CSV, указав в качестве геометрии AS_XYZ.
Спойлер
Модель рельефа сколько-нибудь удовлетворительного качества по высыпанным из горизонталей точкам построить очень трудно, практически невозможно. Грамотный подход — строить модели непосредственно по горизонталям. Это умеют — в порядке убывания качества результатов — ArcGIS TopoToRaster, GS Surfer (начиная с 14 версии), GRASS r.surf.contour.
The purpose of computing is insight, not numbers
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 17 гостей