Как в QGIS экспортировать линейный шейп в CSV со всеми атрибутами?

Вопросы по свободной ГИС QGIS. Сообщения об ошибках, предложения по улучшению, локализация.
Ответить
Аватара пользователя
Natalia Novoselova
Гуру
Сообщения: 2963
Зарегистрирован: 15 янв 2013, 20:14
Репутация: 60
Ваше звание: Лиса
Откуда: **
Контактная информация:

Как в QGIS экспортировать линейный шейп в CSV со всеми атрибутами?

Сообщение Natalia Novoselova » 28 мар 2019, 18:31

Для решения другой задачи (Как загрузить линейные высоты и 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 файл с атрибутами высоты, которые он зачем-то записал отдельно.

И никаких способов записать это иначе или просто объединить, чтобы в итоге получилась полная таблица - с координатами и высотой я не нашла. :cry: :cry:

Как можно нормально получить CSV файл со всеми атрибутами? Или какую операцию по соединению таблиц полученных в MMQGIS нужно выполнить?
Вложения
cada5m_CSV_v7at.csv
(9.39 КБ) 203 скачивания
cada 5m.zip
(496.64 КБ) 18 скачиваний

trir
Гуру
Сообщения: 4352
Зарегистрирован: 09 апр 2010, 19:30
Статьи: 1
Репутация: 793
Ваше звание: просто мимо прохожу
Откуда: Ё-бург

Re: Как в QGIS экспортировать линейный шейп в CSV со всеми атрибутами?

Сообщение trir » 28 мар 2019, 18:55

python

Аватара пользователя
Natalia Novoselova
Гуру
Сообщения: 2963
Зарегистрирован: 15 янв 2013, 20:14
Репутация: 60
Ваше звание: Лиса
Откуда: **
Контактная информация:

Re: Как в QGIS экспортировать линейный шейп в CSV со всеми атрибутами?

Сообщение Natalia Novoselova » 28 мар 2019, 19:00

trir писал(а):
28 мар 2019, 18:55
python
Я не умею работать с python.

Как это сделать в QGIS? Или другом кнопочном конверторе.

trir
Гуру
Сообщения: 4352
Зарегистрирован: 09 апр 2010, 19:30
Статьи: 1
Репутация: 793
Ваше звание: просто мимо прохожу
Откуда: Ё-бург

Re: Как в QGIS экспортировать линейный шейп в CSV со всеми атрибутами?

Сообщение trir » 29 мар 2019, 08:44

Много лет назад я говорил учить SQL...

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;
3. Создадим таблицу

Код: Выделить всё

CREATE TABLE [dbo].[res1](
	[id] [int] NULL,
	[geom] [geometry] NULL,
	[height_m] [numeric](9, 0) NULL
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
4. Выполним запрос с курсором

Код: Выделить всё

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
5. Выполним запрос

Код: Выделить всё

SELECT [id],[geom].STX as x, [geom].STY as y,[height_m] FROM [test1].[dbo].[res1]
и сохраним результат как .csv

Глупо полагать, что найдётся кнопка на все случаии жизни - надо учится самому их создавать

Аватара пользователя
Игорь Белов
Гуру
Сообщения: 1822
Зарегистрирован: 04 янв 2011, 22:00
Статьи: 12
Проекты: 1
Репутация: 1139
Откуда: Казань

Re: Как в QGIS экспортировать линейный шейп в CSV со всеми атрибутами?

Сообщение Игорь Белов » 29 мар 2019, 09:19

Natalia Novoselova писал(а):
28 мар 2019, 18:31
нужно линейный шейп … правильно экспортировать в точечный CSV файл
[Vector] → [Geometry Tools] → [Extract Vertices…]
Результат из шейпфайла пересохранить в CSV, указав в качестве геометрии AS_XYZ.
SpoilerShow
Модель рельефа сколько-нибудь удовлетворительного качества по высыпанным из горизонталей точкам построить очень трудно, практически невозможно. Грамотный подход — строить модели непосредственно по горизонталям. Это умеют — в порядке убывания качества результатов — ArcGIS TopoToRaster, GS Surfer (начиная с 14 версии), GRASS r.surf.contour.

Ответить

Вернуться в «QGIS»

Кто сейчас на конференции

Сейчас этот форум просматривают: OlegPrs и 1 гость