Как экспортировать координаты x, y, z из массивов сетки? - PullRequest
1 голос
/ 07 июня 2019

Я пытаюсь сгенерировать координаты x, y, z, чтобы создать идеализированный ландшафт для использования в программном обеспечении и моделировании ГИС. Я новичок в Python, и это определенно покажет.

Для этого я хотел бы создать сетку из точек x, y, z через регулярные интервалы сетки. x представляет широту, y, долготу и z, высоту.

Я могу разбить пейзаж на несколько частей, которые затем можно соединить вместе:

  1. прямоугольники с постоянной высотой (z = постоянная)
  2. прямоугольники, где z зависит либо от x, либо от y. Например, наклон, где z увеличивается с увеличением x.

Я дошел до использования meshgrid, который создал серию массивов. Мне просто нужно извлечь каждую соответствующую позицию массива вместе в порядке экспорта данных X, Y, Z.

Я в конечном итоге сделаю это с гораздо большим набором данных, но приведенный ниже код рассчитан на 16 баллов.

тестовый прогон

import numpy as np import matplotlib.pyplot as plt

создать координаты с интервалом 30 и начиная с x = 313000, y = 6220000, z постоянна на 15

sp=(30)
x=np.arange(313000, 313120, sp)
y=np.arange(6220000,6220120, sp)
z=np.repeat(15,4)
x_mesh, y_mesh, z_mesh=np.meshgrid(x,y,z)

показать точечный график сетки

plt.scatter(x_mesh, y_mesh, z_mesh)
plt.show

создать координаты из сетки

coords=??? print(coords)

экспорт координат в CSV-файл

import csv

with open('coords.csv','w') as f: out = csv.writer(f, delimiter=',') out.writerows(zip(*coords)) f.close()

1 Ответ

0 голосов
/ 07 июня 2019

Вы можете попробовать

coords = []
for a, b, c in  zip(x_mesh, y_mesh, z_mesh):
    for a1, b1, c1 in zip(a, b, c):
        for a2, b2, c2 in zip(a1, b1, c1):
            coords.append((a2, b2, c2,))

Или Понимание списка

coords = [(a2, b2, c2,) for a, b, c in zip(x_mesh, y_mesh, z_mesh) for a1, b1, c1 in zip(a, b, c) for a2, b2, c2 in zip(a1, b1, c1)]

Длина coords зависит от числа здесь z=np.repeat(15, x), имеет отношение
Number of points * x
Ваш сюжет также будет составлять 16 точек с x = 1.
При увеличении х каждая точка дублируется х раз.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...