Как создать интерактивную ссылку между файлами .xlsx и .shp? (когда изменения вносятся в один файл, они автоматически обновляются в другом) - PullRequest
0 голосов
/ 28 мая 2019

Я работаю над созданием связи между картой сельскохозяйственных полей (в Qgis) и экономической моделью (в Excel).Шейп-файл карты состоит из различных физических параметров и данных о предполагаемой урожайности.Файл Excel содержит экономические данные и оценку прибыли для каждого поля.Кроме того, у меня есть поле в файле .shp карты, которое представляет значения прибыли, рассчитанные по экономичной модели в Excel.

Мне нужно использовать код, который создаст автоматическую связь между двумя файлами, то есть при изменении значений доходности.shp файл, они должны автоматически изменяться в файле .xlsx, и наоборот, когда значения прибыли в файле Excel изменяются, они должны автоматически обновляться в шейп-файле.

Я попытался создать соединение файла Excel с шейп-файлом, используяИнструменты Qgis, которые создают одностороннюю ссылку: Excel => shapefile.Однако мне нужно иметь другую ссылку: shapefile => Excel, что я не знаю, как это сделать.

Кроме того, я попытался написать код для упомянутого объединения в PyQgis, чтобы попытатьсяизмените его, чтобы потом создать обратную ссылку, но это не сработало:

(Пожалуйста, не судите, это мой самый первый опыт, поэтому в нем должно быть много ошибок)


```from PyQt4.QtGui import *

```vectorLayer = QgsVectorLayer (route, "Parcels", "ogr")

```vectorLayer.isValid()

```route = "C:\AZ\PZDC.xlsx"

```from PyQt4.QtGui import *

```layer = QgsVectorLayer (route, "Economics", "ogr")

```layer.isValid()

```QgsMapLayerRegistry.instance().addMapLayer(vectorLayer)

```QgsMapLayerRegistry.instance().addMapLayer(layer)

```info = QgsVectorJoinInfo ()

```info.joinLayerId = layer.id()

```info.joinFieldName = "ID"

```info.targetFieldName = "nr"

```info.memoryCache = True

```vectorLayer.addJoin(info)

```QgsVectorFileWriter.writeAsVectorFormat(vectorLayer, "C:\AZ\parcels_economics.shp", "CP120", None, "ESRI Shapefile")

```joinedLayer = QgsVectorLayer('C:\AZ\parcels_economics.shp', 'Joined' "ogr")


There weren't any error messages, but nothing had happened, and joined layer wasn't created. Also I still can't figure out how to make join work both ways, from Excel to shapefile and from shapefile to Excel at the same time.

Thank you for reading my questions, I would strongly appreciate any help regarding my issue!
...