[Gvsig_usuarios] rellenar campos con una sintaxis string

Victor Acevedo vacevedo.gvsig.org en gmail.com
Lun Nov 19 12:49:02 CET 2012


El 19/11/12 10:04, pau maudos bonjoch escribió:

>
> otra cosa como lo has ejecutado, ¿mediante un compliador de Phyton? ¿Cual?
>

Hola de nuevo,

a esto no te he respondido. Python es un lenguaje interpretado, no 
necesita compilarse. Lo que necesitas es tener instalado el intérprete.
Puedes obtener más información desde la página del proyecto [1].
De todas formas, verás que la extensión de scripting lleva incorporado 
un terminal desde el que puedes hacer pruebas y tiene la ventaja de 
estar integrado en gvSIG, por lo que puedes acceder a lo que tengas 
cargado desde este terminal.

Saludos,
Victor Acevedo


[1] http://www.python.org/


> Saludos y gracias de antemano,
>
> Pau
>
> PD: Si a otros usuarios se os ocurre como hacerlo promonerlo!
>
>
>
>
>
>
>
> 2012/11/16 Victor Acevedo <vacevedo.gvsig.org en gmail.com>
>
>> El 16/11/12 12:25, pau maudos bonjoch escribió:
>>
>>   Hola soy Pau
>>>
>>> Estoy trabajando con el código de SIOSE y quiero rellenar otro campo según
>>> una serie de parámetros que cito a posteriormente (un poco más abajo).
>>> Este codigo corresponde al SIOSE que catalogó los usos del suelo de
>>> España,
>>> pero la lió muchisima al querer poner demasiada información en un mismo
>>> poligono.
>>>
>>> El codigo es algo parecido a esto:
>>>
>>> I(90FDPpl_05FDC_05SNE)
>>> AAR(80EDFva_10CHLsc_10PRDsc)
>>> A(80MTR_10FDPpl_10SNE)
>>> FDPpl
>>> A(70FDC_30MTR)
>>> AAR(70EDFva_10PRDsc_10CHLsc_**10FDC)
>>> A(85FDPpl_10FDC_05SNE)
>>> FDC
>>> I(40PRDsc_40CHLsc_10FDC_**05EDFva_05VAP)
>>> A(60MTR_40FDPpl)
>>> I(35EDFvd_35UEN(45ZAU_35EDFvd_**20VAP)_15PAG(55SNE_35EDFnv_**
>>> 05OCT_05VAP)_15PRDsc)
>>> I(50PST_25ECM(75OCT_15ZAU_**10VAP)_25SNE)
>>> A(85CNFpl_15MTR)
>>> I(50FDC_40PRDsc_10EDFva)
>>> A(60MTR_30PST_10SNE)
>>> UEN(40EDFvd_40ZAU_20VAP)
>>> NRV(85VAP_15ZAU)
>>> A(70MTR_30SNE)
>>> I(75PRDsc_25IAS(80EDFnv_20ZEV)**)
>>> A(55MTR_30FDC_15SNE)
>>> A(80CNFpl_20MTR)
>>> I(70FDCfr_30ACU)
>>> I(55PRDsc_35MTRpc_05FDPpl_**05SNE)
>>> A(65MTRpc_35FDC)
>>> AAR(60EDFva_20PRDsc_10CHLsc_**10FDC)
>>> A(60FDC_30MTR_10SNE)
>>> I(35PRDsc_30LOCsc_25IAS(**50EDFnv_25VAP_20SNE_05ZAU)_**10EDFva)
>>> I(40PRDsc_25EDFva_25IAS(**80EDFnv_20VAP)_10UEN(80EDFvd_**20SNE))
>>> EDU(35OCT_35SNE_15EDFea_15VAP)
>>> I(60AAR(90EDFva_05PRDsc_**05CHLsc)_40PRDsc)
>>> I(35PRDsc_20CHLsc_20FDC_**10EDFva_10EDFnv_05VAP)
>>> I(80PRDsc_10CHLsc_05FDC_05VAP)
>>> AAR(70EDFva_10FDC_10CHLsc_**10PRDsc)
>>> I(40MTR_40FDC_20EDFva)
>>> FDC
>>> I(25AAR(EDFva)_25CHLsc_**25PRDsc_15FDC_10EDFva)
>>> I(30PRDsc_30EDFva_20AAR(**90EDFva_05PRDsc_05CHLsc)_**
>>> 10UEN(90EDFvd_05ZAU_05VAP)_**05FDC_05LOCsc)
>>> PAG(80ZEV_15EDFnv_05VAP)
>>> I(65PRDsc_20CHLsc_10VAP_05FDC)
>>> I(30PRDsc_30CHLsc_15EDFva_**10MTR_10PAG(80ZEV_20EDFnv)_**05VAP)
>>> A(75FDC_15PRDsc_10FDPpl)
>>> A(55MTR_40FDPpl_05SNE)
>>> A(70MTR_25CNFpl_05SNE)
>>> I(65PRDsc_25CHLsc_05FDC_**05EDFva)
>>> A(70CNFpl_15FDPpl_15MTR)
>>> I(60PRDsc_20CHLsc_10FDC_**05EDFnv_05VAP)
>>> I(65PRDsc_15FDC_10MTRct_05VAP_**05EDFva)
>>> I(55PRDsc_30FDC_10FDPpl_05VAP)
>>> PRDsc
>>> I(55EDFva_30PRDsc_15FDC)
>>> EDP(60ZAU_15SNE_10EDFea_10VAP_**05OCT)
>>> I(65PRDsc_30CHLsc_05SNE)
>>> PAG(70ZEV_15ZAU_10EDFnv_05VAP)
>>> AAR(65EDFva_30PRDsc_05CHLsc)
>>> I(90UEN(75EDFea_10SNE_10VAP_**05ZAU)_10UCS(90EDFva_10ZAU))
>>> ...
>>> ...
>>> ...
>>> estos son los codigos que pertenecen a distintos poligonos...
>>>
>>>
>>> cada grupo de tres letras le corresponde un uso distinto.
>>> yo quisiera rellenar en otra columna la siguiente operación
>>> - haciendo una suma del % del uso predominante (se que este es muy
>>> complicado, debido a que el codigo es muy complejo...)
>>> - o bién, otro caso que se aproximaria al objetivo es que se muestren en
>>> otro campo las tres primeras letras MAYUSCULAS, dentro de cada parentesis
>>> si  contienen parentesis, sino las tres que hay en el poligono en
>>> cuestion.
>>> El problema es que antes del parentesis puedes encontrarte des de una
>>> letra
>>> o tres.
>>>
>>> Al final lo deje, el codigo pudo conmigo, si pudieras darle un par de
>>> vueltas al asunto me harias un gran favor.
>>> Sé que no es tarea fácil, pero seria de muy gran ayuda. Además, pareces
>>> que
>>> dominas el tema a la perfección.
>>>
>>> gracias de antemano
>>>
>>>
>>>
>>> Pau
>>>
>>>
>>> PD: perdon en el anterior no tenia asunto
>>>
>>>
>>>
>>>
>>
>> Hola Pau,
>>
>> no he entendido tu primera intención, pero la aproximación
>>
>>
>>> - o bién, otro caso que se aproximaria al objetivo es que se muestren en
>> otro campo las tres primeras letras MAYUSCULAS, dentro de cada parentesis
>> si  contienen parentesis, sino las tres que hay en el poligono en cuestion.
>> El problema es que antes del parentesis puedes encontrarte des de una letra
>> o tres.
>>
>> no es tan complicada mediante un script. Si lo he entendido bien.
>> Necesitas las 3 primeras ocurrencias de letras en mayúsculas después de un
>> paréntesis, y si no hay paréntesis, lo que sea que haya en la cadena.
>>
>> Lo que he hecho es copiar los datos que adjuntas en el correo en un
>> archivo que he dejado en '/tmp/codigos.txt' y montar el siguiente script.
>> Está hecho deprisa y corriendo pero te dará una idea de lo que pudes hacer.
>>
>> {{{
>>
>> import re
>>
>> def main():
>>
>>    f = file("/tmp/codigos.txt", "r")
>>
>>    #recorre las lineas del archivo
>>    for index, line in enumerate(f.readlines()):
>>      print "%s, %s"%(index,line)
>>
>>      #Si no encuentra un "(" devuelve el codigo
>>      if line.find("(") ==-1:
>>        print line
>>        continue
>>      patron = re.compile("[A-Z]{3}")
>>      index = 0
>>
>>      #busca dentro de la linea todos los "("
>>      while (line.find("(", index, len(line)) !=-1):
>>          index = line.find("(", index, len(line)) +1
>>          dd = line[index:]
>>
>>          #busca las 3 primeras mayusculas en la cadena
>>          r=patron.search(dd)
>>
>>          #si se ha encontrado algo imprime el resultado
>>          if r:
>>              print r.string[r.start():r.end()]
>>
>>    file.close()
>>
>> }}}
>>
>> El resultado que obtengo de tus datos (10 líneas) es:
>>
>> 0, I(90FDPpl_05FDC_05SNE)
>> FDP
>>
>> 1, AAR(80EDFva_10CHLsc_10PRDsc)
>> EDF
>>
>> 2, A(80MTR_10FDPpl_10SNE)
>> MTR
>>
>> 3, FDPpl
>> FDPpl
>>
>> 4, A(70FDC_30MTR)
>> FDC
>>
>> 5, AAR(70EDFva_10PRDsc_10CHLsc_**10FDC)
>> EDF
>>
>> 6, A(85FDPpl_10FDC_05SNE)
>> FDP
>>
>> 7, FDC
>> FDC
>>
>> 8, I(40PRDsc_40CHLsc_10FDC_**05EDFva_05VAP)
>> PRD
>>
>> 9, A(60MTR_40FDPpl)
>> MTR
>>
>> 10, I(35EDFvd_35UEN(45ZAU_35EDFvd_**20VAP)_15PAG(55SNE_35EDFnv_**
>> 05OCT_05VAP)_15PRDsc)
>> EDF
>> ZAU
>> SNE
>>
>> Si resulta que tienes la capa cargada en gvSIG 2.0 puedes crearte una capa
>> nueva con los resultados. Si estas interesado,dímelo y te mando una
>> aproximación.
>>
>> Te adjunto 3 archivos.
>> - los codigos de tu correo en un txt (codigos.txt)
>> - los resultados de ejecutar el script usando el archivo anterior
>> - el código
>>
>> Saludos,
>> Victor Acevedo
>>
>>
>>   ______________________________**_________________
>>> gvSIG_usuarios mailing list
>>> gvSIG_usuarios en listserv.gva.es
>>>
>>> Para ver histórico de mensajes, editar sus preferencias de usuario o
>>> darse de baja en esta lista, acuda a la siguiente dirección:
>>>
>>> http://listserv.gva.es/cgi-**bin/mailman/listinfo/gvsig_**usuarios<http://listserv.gva.es/cgi-bin/mailman/listinfo/gvsig_usuarios>
>>>
>>>
>>
>> _______________________________________________
>> gvSIG_usuarios mailing list
>> gvSIG_usuarios en listserv.gva.es
>>
>> Para ver histórico de mensajes, editar sus preferencias de usuario o darse
>> de baja en esta lista, acuda a la siguiente dirección:
>>
>> http://listserv.gva.es/cgi-bin/mailman/listinfo/gvsig_usuarios
>>
>
>
>
> _______________________________________________
> gvSIG_usuarios mailing list
> gvSIG_usuarios en listserv.gva.es
>
> Para ver histórico de mensajes, editar sus preferencias de usuario o darse de baja en esta lista, acuda a la siguiente dirección:
>
> http://listserv.gva.es/cgi-bin/mailman/listinfo/gvsig_usuarios
>



Más información sobre la lista de distribución gvSIG_usuarios