Tendrá que formatear los datos para convertirlos en polígonos. Etiquetar simplemente un campo como WKT no le ayudará. Si tiene muchos archivos (como parece), lo más eficaz será automatizar la solución escribiendo un script.
Iba a explicar cómo cuando decidí que lo más sencillo sería escribir un script de ejemplo (¡disculpad si os estoy enseñando a chupar huevos!):
import os
csvFolder = r"C:\myFolder\mySubFolder"
#----------------------------------------
def writePolyToFile(outFile, polygon, polyId):
wkt = "POLYGON((" + ','.join(polygon) + "))\n"
outFile.write(str(polyId) + ';' + wkt)
def makePolys(inPath, outPath):
try:
with open(inPath,'r') as inFile:
contents = inFile.readlines()
polyId = 0
polygon = []
for line in contents:
line = line.rstrip('\n')
if polyId == 0:
if line != 'x,y':
print("Unexpected file contents detected in", inPath)
break
outFile = open(outPath,'w')
outFile.write("id;wkt\n")
polyId += 1
elif len(line) == 0:
writePolyToFile(outFile, polygon, polyId)
polygon = []
polyId += 1
else:
polygon.append(line.replace(',',' '))
writePolyToFile(outFile, polygon, polyId) #append the last polygon after EOF
outFile.close()
print('Conversion to WKT OK for', inPath)
except:
print('WARNING: conversion to WKT failed for', inPath)
def iterateFiles():
csvFiles = [each for each in os.listdir(csvFolder) if each.endswith('.csv')]
for file in csvFiles:
inPath = os.path.join(csvFolder, file)
newName = "WKT_" + file
outPath = os.path.join(csvFolder, newName)
makePolys(inPath, outPath)
#---------------------------------------------
if __name__ == "__main__":
iterateFiles()
Este es un script Python muy simple que iterará sobre una carpeta de archivos CSV como un proceso por lotes. Comprueba de forma lógica que la primera línea del archivo sigue el formato 'x,y'. A continuación, recoge todos los puntos en una matriz hasta que encuentra una línea en blanco y refunde la matriz como una cadena WKT que se escribe en un archivo de salida del mismo nombre que el original, pero con el prefijo 'WKT_' (por lo que 'primerArchivo.csv' se exporta a 'WKT_primerArchivo.csv' conservando el archivo original).
Cambie la línea siguiente csvCarpeta = r" C:\myFolder\mySubFolder " para que apunte a una carpeta que contenga todos los archivos CSV que desee convertir (¡asegúrese de mantener la 'r' al principio de la ruta!).
Ahora puede abrir los archivos resultantes utilizando el cuadro de diálogo normal "Añadir capa vectorial" en lugar del cuadro de diálogo "Añadir texto delimitado".
EDITAR
He aquí una muestra de mi prueba:
Entrada:
x,y
10,10
20,20
20,30
10,10
5,5
5,6
6,5
5,5
15,15
30,30
30,40
15,15
Salida:
id;wkt
1;POLYGON((10 10,20 20,20 30,10 10))
2;POLYGON((5 5,5 6,6 5,5 5))
3;POLYGON((15 15,30 30,30 40,15 15))