Revision 564 org.gvsig.scripting/trunk/org.gvsig.scripting/org.gvsig.scripting.app/org.gvsig.scripting.app.mainplugin/src/main/resources-plugin/scripting/scripts/libs/gvpy.py
gvpy.py | ||
---|---|---|
1 | 1 |
# -*- coding: utf-8 -*- |
2 | 2 |
# |
3 | 3 |
# File: gvpy.py |
4 |
# Version: v0.4
|
|
5 |
# |
|
4 |
# Version: v0.5
|
|
5 |
# 2016/02/10
|
|
6 | 6 |
|
7 | 7 |
__author__ = """Oscar Martinez Olmos <masquesig@gmail.com>""" |
8 | 8 |
|
... | ... | |
18 | 18 |
import java.awt.event |
19 | 19 |
import java.awt.geom |
20 | 20 |
from java.io import File |
21 |
from java.util import ArrayList |
|
21 | 22 |
|
22 |
def addDependencyWithPlugin(pluginCode): |
|
23 |
pluginsManager = PluginsLocator.getManager() |
|
24 |
scriptingPlugin = pluginsManager.getPlugin("org.gvsig.scripting.app.extension") |
|
25 |
scriptingPlugin.addDependencyWithPlugin(pluginsManager.getPlugin(pluginCode)) |
|
23 |
import uselib |
|
24 |
uselib.use_plugin("org.gvsig.geoprocess.app.mainplugin") |
|
26 | 25 |
|
27 |
addDependencyWithPlugin("org.gvsig.geoprocess.app.mainplugin") |
|
28 |
|
|
29 | 26 |
from es.unex.sextante.core import Sextante, OutputFactory, AnalysisExtent |
30 | 27 |
from es.unex.sextante.outputs import FileOutputChannel |
31 | 28 |
from es.unex.sextante.gui.core import SextanteGUI |
32 | 29 |
from es.unex.sextante.dataObjects import IRasterLayer |
30 |
from es.unex.sextante.parameters import RasterLayerAndBand |
|
33 | 31 |
|
34 | 32 |
from org.gvsig.geoprocess.lib.sextante.dataObjects import FlyrVectIVectorLayer, FLyrRasterIRasterLayer, TableDocumentITable |
35 | 33 |
from org.gvsig.fmap.mapcontext.layers import FLayer |
36 | 34 |
from java.awt.geom import RectangularShape, Rectangle2D |
37 | 35 |
from org.gvsig.fmap.mapcontext.layers.vectorial import FLyrVect |
38 | 36 |
from org.gvsig.raster.fmap.layers import DefaultFLyrRaster |
37 |
from org.gvsig.app.project.documents.view import DefaultViewDocument |
|
38 |
from org.gvsig.fmap.dal import DALLocator |
|
39 |
from org.gvsig.fmap.mapcontext import MapContextLocator |
|
39 | 40 |
|
40 | 41 |
#Constant |
41 | 42 |
TYPE_POLYGON = 0 |
... | ... | |
137 | 138 |
else: |
138 | 139 |
paramValue = self.__createSextanteLayer(paramValue()) |
139 | 140 |
|
140 |
if DEV_INFO: print "extent add+"
|
|
141 |
if DEV_INFO: print "Extent add"
|
|
141 | 142 |
if self.__defaultAE == None: |
142 | 143 |
self.__defaultAE = AnalysisExtent(paramValue) |
143 | 144 |
else: |
... | ... | |
157 | 158 |
else: |
158 | 159 |
if DEV_INFO: print type(i) |
159 | 160 |
if isinstance(i, tuple): #si dentro de la lista viene una tupla identificamos que es un raster y su banda |
160 |
from es.unex.sextante.parameters import RasterLayerAndBand |
|
161 | 161 |
rlb = RasterLayerAndBand(self.__createSextanteRaster(i[0]),i[1]) #puesta numero de banda |
162 |
|
|
163 | 162 |
ii = self.__createSextanteRaster(i[0]) |
164 | 163 |
i = rlb |
165 |
if DEV_INFO: print "*************************** RASTERLAYERBAND", rlb |
|
166 |
|
|
164 |
if DEV_INFO: print "RASTERLAYERBAND", rlb |
|
167 | 165 |
else: |
168 | 166 |
if str(type(i)) == "<type 'org.gvsig.raster.fmap.layers.DefaultFLyrRaster'>": |
169 | 167 |
ii = self.__createSextanteRaster(i) |
... | ... | |
171 | 169 |
else: |
172 | 170 |
ii = self.__createSextanteLayer(i()) |
173 | 171 |
i = self.__createSextanteLayer(i()) |
174 |
|
|
175 | 172 |
if DEV_INFO: print "createStextenatnte Layer i :", i |
176 | 173 |
paramValue2.append(i) |
177 |
|
|
178 | 174 |
if self.__defaultAE == None: |
179 | 175 |
try: |
180 | 176 |
self.__defaultAE = AnalysisExtent(AnalysisExtent(ii)) |
... | ... | |
195 | 191 |
except: |
196 | 192 |
|
197 | 193 |
self.__defaultAE.addExtent(AnalysisExtent(ii())) |
198 |
|
|
199 | 194 |
""" |
200 | 195 |
if self.__defaultAE == None: |
201 | 196 |
try: |
... | ... | |
217 | 212 |
""" |
218 | 213 |
|
219 | 214 |
paramValue = paramValue2 |
220 |
from java.util import ArrayList |
|
215 |
|
|
221 | 216 |
if DEV_INFO: |
222 | 217 |
print "PARAM VALUE 2: ", paramValue |
223 | 218 |
print "****************** CONDI6: ", paramValue |
... | ... | |
318 | 313 |
frame = kwparams['EXTENT'] |
319 | 314 |
if isinstance(frame, str): frame = gvsig.currentView().getLayer(frame) |
320 | 315 |
#print ("|"+str(frame)+"||"+str(type(frame))) |
321 |
if isinstance(frame, str) or isinstance(frame, gvsig.View):
|
|
316 |
if isinstance(frame, str) or isinstance(frame, DefaultViewDocument):
|
|
322 | 317 |
AExtent = AnalysisExtent() |
323 | 318 |
if DEV_INFO: print "| EXTENT from VIEW" |
324 |
if isinstance(frame, gvsig.View): view = frame
|
|
319 |
if isinstance(frame, DefaultViewDocument): view = frame
|
|
325 | 320 |
else: view = gvsig.currentProject().getView(frame) |
326 | 321 |
envelope = view.getMap().getFullEnvelope() |
327 | 322 |
xlow = envelope.getLowerCorner().getX() |
... | ... | |
390 | 385 |
algorithm.setAnalysisExtent(AExtent) |
391 | 386 |
|
392 | 387 |
#Set: cellsize |
393 |
|
|
394 | 388 |
if 'CELLSIZE' in kwparams.keys(): |
395 | 389 |
AExtent.setCellSize(kwparams['CELLSIZE']) |
396 | 390 |
if DEV_INFO: print "| New Cellsize: ", kwparams['CELLSIZE'], AExtent.getCellSize() |
... | ... | |
472 | 466 |
layer.dispose() |
473 | 467 |
elif isinstance(value, IRasterLayer): |
474 | 468 |
if DEV_INFO: print "| Raster layer" |
475 |
dalManager = gvsig.DALLocator.getDataManager()
|
|
476 |
mapContextManager = gvsig.MapContextLocator.getMapContextManager()
|
|
469 |
dalManager = DALLocator.getDataManager() |
|
470 |
mapContextManager = MapContextLocator.getMapContextManager() |
|
477 | 471 |
params = dalManager.createStoreParameters("Gdal Store") |
478 | 472 |
params.setFile(File(value.getFilename())) |
479 | 473 |
dataStore = dalManager.createStore(params) |
... | ... | |
516 | 510 |
value = loadShapeFileNew(str(path), tocName=kwparams["TOCNAME"]) |
517 | 511 |
else: |
518 | 512 |
value = loadShapeFileNew(str(path)) |
519 |
|
|
520 |
|
|
521 | 513 |
outList.append(value) |
522 | 514 |
elif isinstance(value,FLayer): |
523 | 515 |
print "|\t Value:", value.getName() |
524 |
print "|\t\t", value.getFileName()[0]
|
|
516 |
print "|\t\t", value.getFile()
|
|
525 | 517 |
#Not yet: Waiting for new loadRasterLayer that can set OUTVIEW |
526 | 518 |
if "TOCNAME" in kwparams: |
527 |
value = loadRasterLayerNew(value.getFileName()[0], tocName=kwparams["TOCNAME"])
|
|
519 |
value = loadRasterLayerNew(value.getFile(), tocName=kwparams["TOCNAME"])
|
|
528 | 520 |
else: |
529 |
value = loadRasterLayerNew(value.getFileName()[0]) |
|
530 |
|
|
521 |
value = loadRasterLayerNew(value.getFile()) |
|
531 | 522 |
outList.append(value) |
532 | 523 |
else: |
533 | 524 |
print "|\t Non-type" |
534 | 525 |
print "\tValue: ", value |
535 |
print "\n" |
|
536 | 526 |
|
527 |
|
|
537 | 528 |
#Return object or list |
529 |
print "\n" |
|
538 | 530 |
if len(r.values()) > 1: return outList |
539 | 531 |
elif len(r.values()) == 1: return value |
540 | 532 |
else: return None |
... | ... | |
598 | 590 |
view= gvsig.currentView() |
599 | 591 |
view.addLayer(layer) |
600 | 592 |
layer.setActive(active) |
601 |
return gvsig.Layer(layer) |
|
602 |
|
|
593 |
return layer #gvsig.Layer(layer) |
|
594 |
|
|
595 |
def copyToDynObject(values, target): |
|
596 |
definition = target.getDynClass(); |
|
597 |
fields = definition.getDynFields(); |
|
598 |
for field in fields: |
|
599 |
name = field.getName() |
|
600 |
keys = values.keys() |
|
601 |
for k in keys: |
|
602 |
if k.lower() == name.lower(): |
|
603 |
target.setDynValue(name, values[name]) |
|
604 |
break |
|
605 |
|
|
603 | 606 |
def loadLayerNew(layerType, tocName=False, **parameters): # |
604 | 607 |
try: |
608 |
# need function copyToDynObject |
|
605 | 609 |
application = ApplicationLocator.getManager() |
606 | 610 |
datamanager = application.getDataManager() |
607 | 611 |
mapcontextmanager = application.getMapContextManager() |
608 | 612 |
store_parameters = datamanager.createStoreParameters(layerType) |
609 |
gvsig.copyToDynObject(parameters, store_parameters)
|
|
613 |
copyToDynObject(parameters, store_parameters) |
|
610 | 614 |
store = datamanager.openStore(layerType, store_parameters) |
611 | 615 |
if tocName!=False: |
612 | 616 |
nameStore = tocName |
613 | 617 |
else: |
614 | 618 |
nameStore = store.getName() |
615 | 619 |
layer = mapcontextmanager.createLayer(nameStore, store) |
616 |
except Throwable, ex: |
|
617 |
raise RuntimeException("Can't load layer, "+ str(ex)) |
|
620 |
return layer |
|
621 |
except Exception as ex: |
|
622 |
raise |
|
618 | 623 |
|
619 |
return layer |
|
620 |
|
|
621 | 624 |
def loadRasterLayerNew(rasterfile, mode = "r", tocName=False ): |
622 | 625 |
## Load a Raster file in a Layer |
623 | 626 |
gvsig_raster.sourceFileName[0]=rasterfile |
... | ... | |
715 | 718 |
else: |
716 | 719 |
count+=1 |
717 | 720 |
return None |
721 |
|
|
718 | 722 |
def currentActive(): |
719 | 723 |
"""Return first active layer on the View""" |
720 | 724 |
layers = gvsig.currentView().getLayers() |
... | ... | |
751 | 755 |
if os.path.isfile(fname): raise Exception("File already exist" + fname) |
752 | 756 |
|
753 | 757 |
def main(*args): |
754 |
#checkFilesExist(["C:/gvsig/ran10.shp"])
|
|
758 |
checkFilesExist("C:/gvsig/ran10.shp")
|
|
755 | 759 |
|
756 |
#geoprocessSearch(" ") |
|
757 |
#geoprocessHelp("closegapsnn") |
|
758 |
#geoprocessHelp("perturbatepointslayer") |
|
759 |
#r = runalg("perturbatepointslayer", LAYER = gvsig.currentLayer(),MEAN = 10, STDDEV = 10 ) |
|
760 |
#r = runalg("perturbatepointslayer", EXTENT = "VIEW", LAYER = currentLayer(),MEAN = 10, STDDEV = 10 ) |
|
761 |
#r = runalg("perturbatepointslayer", EXTENT = [0,0,500,500], LAYER = currentLayer(), MEAN = 10, STDDEV = 10 ) |
|
762 |
#r = runalg("perturbatepointslayer", PATH = "C://gvsig//perturbatepoints028.shp", LAYER = gvsig.currentLayer(),MEAN = 5, STDDEV = 5 ) |
|
763 |
#layer = gvsig.currentView().getLayer("data_test_lines.shp") |
|
764 |
#r = runalg("linestoequispacedpoints", LINES=layer,DISTANCE=2) |
|
765 | 760 |
|
766 |
#for i in range(10): |
|
767 |
#r = runalg("perturbatepointslayer", LAYER = r[0],PATH = "C://gvsig//perturbatepoints028_" + str(i) + ".shp",MEAN =0.5, STDDEV = 0.5 ) |
|
768 |
#r = runalg("fixeddistancebuffer", LAYER = r[0], DISTANCE=1, TYPES="", RINGS=3, NOTROUNDED=False) |
|
769 |
#r = runalg("randomvector", COUNT=20, TYPE=1, EXTENT=gvsig.currentView()) |
|
770 |
#RASTER |
|
771 |
#r1 = runalg("generaterandomnormal", EXTENT = [0,0,500,500], PATH = "C://gvsig//perturbatepoints030.tif", MEAN =0.5, STDDEV = 0.5) |
|
772 |
#layer = gvsig.currentView().getLayer("perturbatepoints030") |
|
773 |
|
|
774 |
#raster = currentRaster() |
|
775 |
#print raster |
|
776 |
|
|
777 |
#layer = gvsig_raster.loadRasterLayer('c:/gvsig/test_low.tif') |
|
778 |
#r1 = runalg("gradientlines",INPUT = layer, MIN=1, MAX=10, SKIP=1) |
|
779 |
#r = runalg("gridorientation",INPUT=layer,METHOD=0) |
|
780 |
#r = runalg("gridorientation",INPUT=layer,METHOD=0, PATH = "C://gvsig//perturbatepoints010.tif") |
|
781 |
#r = runalg("gridorientation", INPUT=raster, METHOD=0, PATH = "C://gvsig//perturbatepoints011.tif") |
|
782 |
#r = runalg("gradientlines", INPUT = layer, MIN=1, MAX=10, SKIP=1, PATH = "C://gvsig//perturbatepoints012.tif") |
|
783 |
#r = runalg("generaterandomnormal", EXTENT = [0,0,500,500], PATH = "C://gvsig//perturbatepoints013.tif", MEAN =0.5, STDDEV = 0.5) |
|
784 |
#geoprocessHelp("randomvector") |
|
785 |
#r = runalg("randomvector", COUNT=20, TYPE=2, EXTENT=gvsig.currentLayer()) |
|
786 |
#r = runalg("randomvector", 200, TYPE_POINT, EXTENT=gvsig.currentLayer(), PATH="C://gvsig//test_puntos_sm01.shp") |
|
787 |
#r = runalg("randomvector", COUNT=20, TYPE=1, EXTENT=gvsig.currentView()) |
|
788 |
#r = runalg("randomvector", COUNT=20, TYPE=1, EXTENT="VIEW") |
|
789 |
#r = runalg("randomvector", COUNT=20, TYPE=1, EXTENT=currentRaster()) |
|
790 |
#r = runalg("gvSIG-convexhull", LAYER="Puntos_de_interes_01.shp", CHECK=True, PATH = "C://gvsig//gvsigconvexhull_001.shp") |
|
791 |
#r = runalg("generaterandomnormal", PATH = "C://gvsig//per.tif", EXTENT=gvsig.currentLayer(), CELLSIZE = 100, PATH = "C://gvsig//perturbatepoints014.tif", MEAN =5, STDDEV = 5) |
|
792 |
#geoprocessHelp("tablebasicstats") |
|
793 |
#r =runalg("tablebasicstats",TABLE=gvsig.currentTable(), FIELD=0) |
|
794 |
|
|
795 |
#Without parameters label |
|
796 |
|
|
797 |
#layers = gvsig.currentView().getLayers() |
|
798 |
##r = runalg("gridorientation", layer, 0, PATH = "C://gvsig//perturbatepoints012.tif") |
|
799 |
|
|
800 |
#r = runalg("gridorientation", layer, 0) |
|
801 |
#r = runalg("gradientlines", layers[0], 1, 10, 1, PATH = "C://gvsig//perturbatepoints012.shp") |
|
802 |
#r = runalg("cva", "test_low", "test_low", "test_low", "test_low") |
|
803 |
#r = runalg("cva", currentRaster(), currentRaster(), currentRaster(), currentRaster(),PATH=["C:/gvsig/1.tif","C:/gvsig/2.tif"]) |
|
804 |
|
|
805 |
#layerRaster = gvsig_raster.loadRasterLayer('c:/gvsig/test_low.tif') |
|
806 |
#r = runalg("gridorientation",layerRaster,0, PATH = "C://gvsig//Grid_orientation.tif",EXTENT=layerRaster, CELLSIZE=1, CELLSIZEZ=10) |
|
807 |
#r2 = runalg("cva", r, r, r, r, PATH=["C:/gvsig/1.tif","C:/gvsig/2.tif"]) |
|
808 |
#print r2[0], r2[1] |
|
809 |
#print layerRaster |
|
810 |
#print getProjectLayer("Vista1", "test_low") |
|
811 |
|
|
812 |
|
|
813 |
#layer = getProjectLayer("Vista1", "as.shp") |
|
814 |
#extent = getProjectLayer("Vista1", "analisis_extent") |
|
815 |
#runalg("difference", "as.shp", "vista2_testeo.shp", PATH="C:/gvsig/recorte_extent.shp", EXTENT=[100, 100, 0, 540, 500, 0]) |
|
816 |
#runalg("difference", "vista2_testeo.shp", layer, PATH="C:/gvsig/recorte_extent_2.shp", EXTENT=layer, OUTVIEW="Nueva") |
|
817 |
#r = runalg("tablebasicstats", "species", 0) |
|
818 |
#print r.encode("UTF-8") |
|
819 |
|
|
820 |
#algHelp("generaterandomnormal") |
|
821 |
""" |
|
822 |
r = runalg("generaterandomnormal", 100,100, CELLSIZE=100, EXTENT=[250,250,0,500,500,0]) |
|
823 |
r = runalg("generaterandomnormal", 10, 10, CELLSIZE=50, EXTENT=[500,500,0, 1000,1000,0]) |
|
824 |
r = runalg("generaterandombernoulli", 50.0, CELLSIZE=25, EXTENT=[1000,1000,0, 1250,1250,0]) |
|
825 |
r = runalg("gradientlines", r, 1, 100, 1) |
|
826 |
|
|
827 |
v1 = runalg("randomvector",10, TYPE_POLYGON, EXTENT=[0,0,0,500,500,0]) |
|
828 |
v2 = runalg("randomvector", 5, TYPE_POLYGON, EXTENT=v1) |
|
829 |
v3 = runalg("difference", v1, v2, PATH="C:/gvsig/Diferencia.shp") |
|
830 |
v4 = runalg("randomvector", 5, 0, PATH="C:/gvsig/randomvector.shp", EXTENT=v3) |
|
831 |
v5 = runalg("randomvector", 100, 2, PATH="C:/gvsig/randompoints.shp", EXTENT="randomvector", OUTVIEW="Nueva") |
|
832 |
v6 = runalg("gvSIG-xyshift", "randompoints", "false", "-250.0", "-250.0", PATH=["C:/gvsig/ran1010.shp","C:/gvsig/ran2020.shp","C:/gvsig/ran3030.shp"]) |
|
833 |
algHelp("tablebasicstats") |
|
834 |
v7 = runalg("gvSIG-buffer", "randompoints", False, 50.0, 0, False, True, 0, 0, PATH="C:/gvsig/buffer_gvsig0138.shp") |
|
835 |
v5 = runalg("randomvector", 100, 2, EXTENT=[0,0,0,500,500,0]) |
|
836 |
|
|
837 |
#Test for model sextante |
|
838 |
v5 = runalg("randomvector", 10, 2, EXTENT=[0,0,0,500,500,0], OUTVIEW="Nueva") |
|
839 |
v5 = runalg("randomvector", "5", 2, EXTENT=[0,0,0,500,500,0], OUTVIEW="Nueva") |
|
840 |
|
|
841 |
r = runalg("generaterandomnormal", 100,100, CELLSIZE=1) |
|
842 |
|
|
843 |
vista= (gvsig.currentView().name).encode('UTF-8') |
|
844 |
""" |
|
845 |
|
|
846 |
|
|
847 |
""" |
|
848 |
vista= "Sin tÃtulo" |
|
849 |
#vista = vista.encode("UTF-8") |
|
850 |
|
|
851 |
print gvsig.currentProject().getView(vista) |
|
852 |
|
|
853 |
|
|
854 |
endid = "_104.shp" |
|
855 |
v = runalg("randomvector", 20, 0) |
|
856 |
v2 = runalg("randomvector", 20, 0,PATH=["C://gvsig//i"+endid]) |
|
857 |
#fitpoints = runalg("fitnpointsinpolygon",v, "2", "74", 1, 0) |
|
858 |
intersection = runalg("gvSIG-intersection", v, getProjectLayer(gvsig.currentView(),"i_102"), True, True,PATH=["C://gvsig//inter_pol"+endid,"C://gvsig//inter_line"+endid,"C://gvsig//inter_point"+endid]) |
|
859 |
""" |
|
860 |
#algSearch("nodelines") |
|
861 |
#ID: extractendpointsoflines || GROUP: Topolog????a || NAME: Obtener extremos de l??neas |
|
862 |
|
|
863 |
#v7 = runalg("gvSIG-buffer", v, "False", 50.0, 0, "false", "true", 0, 0) |
|
864 |
#print "**Addfield: ", gvpy.addField(v, "ID5") |
|
865 |
#import gvpy |
|
866 |
#gvpy.addField(v, "ID89") |
|
867 |
#runalg("vectoraddfield", v, "Campo1", 0, 1, 0, 1, PATH="C:\\Users\\Oscar\\Desktop\\testi.shp") |
|
868 |
#layer = runalg("randomvector", 20, TYPE_LINE, EXTENT=[0,0,0,500,500,0], OUTVIEW="Po1") |
|
869 |
|
|
870 |
#2015-1-2 |
|
871 |
|
|
872 |
|
|
873 |
#runalg("graticulebuilder", "10.0", "10.0", 1, PATH="/home/oscm/temp/reticula10.shp") |
|
874 |
#layer1 = gvsig.currentView().getLayer("1") |
|
875 |
#layer2 = gvsig.currentView().getLayer("2") |
|
876 |
#print layer1, layer2 |
|
877 |
# |
|
878 |
#algHelp("cluster") |
|
879 |
#runalg("merge", layer1, [layer2]) |
|
880 |
|
|
881 |
#layer1 = sRaster(0) |
|
882 |
#layer2 = sRaster(1) |
|
883 |
#print "Layer1: ", layer1.name, layer1, layer1.getCellSize() |
|
884 |
#print "Layer2: ", layer2.name, layer2, layer2.getCellSize() |
|
885 |
|
|
886 |
|
|
887 | 761 |
#runalg("cluster" , INPUT=[(layer1, 0),(layer2,0)] , NUMCLASS=3)#, CELLSIZE=layer1.getCellSize(), CELLSIZEZ=1)#,EXTENT=layer1) |
888 | 762 |
#runalg("mergegrids", [layer1, layer2], "0") |
889 | 763 |
v1 = runalg("randomvector",10, TYPE_POLYGON, EXTENT=[0,0,0,500,500,0], TOCNAME="Random vector") |
890 | 764 |
r = runalg("generaterandomnormal", EXTENT = [0,0,0,500,500,0], MEAN =0.5, STDDEV = 0.5, TOCNAME="Raster Generate Random normal") |
891 |
print "end"
|
|
765 |
r = runalg("generaterandomnormal", 100,TYPE_POINT, CELLSIZE=100, EXTENT=[250,250,0,500,500,0])
|
|
892 | 766 |
|
893 |
def mainLibrary(): |
|
894 |
#showFields(gvsig.currentLayer()) |
|
895 |
#removeField(layer, "campo3") |
|
896 |
#removeField(layer, "campo5") |
|
897 |
#addField(layer,"campo1") |
|
898 |
#addField(layer,"campo2") |
|
899 |
#renameField(layer, "campo5", "campo50") |
|
900 | 767 |
|
901 |
#print list2geompoly([[1,2],[3,10],[5,30]]) |
|
902 |
#addFeature(layer, "test01", "test2", [15,200]) |
|
903 |
#addFeature(layer, "test11", "test3", geom.createPoint(300, 301)) |
|
904 |
#addFeature(layer, campo1 = "kwparam", campo2 = "kwparam2", GEOMETRY = geom.createPoint(300,300)) |
|
905 |
#addFeature(layer, "linea", "01", [[1,2],[3,10],[5,30]]) |
|
906 |
#addFeature(layer, "pol", "02", [[50,80],[150,50],[100,10],[0,10],[50,80]]) |
|
907 | 768 |
|
908 |
""" |
|
909 |
layer = newLayer() |
|
910 |
addFeature(layer, "pol", "01", [[50,80],[150,50],[100,10],[0,10],[50,80]]) |
|
911 |
addFeature(layer, "pol", "02", [[0,0],[10,5],[10,10],[0,10],[5,5]]) |
|
912 |
addFeature(layer, "pol", "03", [[-50, -34],[0,0], [-14,30]]) |
|
913 |
addField(layer,"campo3") |
|
914 |
modifyFeatures(layer, "campo3", "nuevo poligono") |
|
915 |
""" |
|
916 |
""" |
|
917 |
#Create shapes |
|
918 |
layer1 = newLayer(layer,"C:/gvsig/point_shape.shp", 1) |
|
919 |
layer2 = newLayer(layer,"C:/gvsig/line_shape.shp", 2) |
|
920 |
layer3 = newLayer(layer,"C:/gvsig/polygon_shape", 3) |
|
921 | 769 |
|
922 |
#Add features |
|
923 |
addFeature(layer1, "point", "01", [50,80]) |
|
924 |
addFeature(layer1, "point", "02",[150,50]) |
|
925 |
addFeature(layer1, "point", "03",[100,10]) |
|
926 |
addFeature(layer1, "point", "04",[0,10]) |
|
770 |
### |
|
771 |
### MODEL TO SCRIPT |
|
772 |
### |
|
927 | 773 |
|
928 |
addFeature(layer3, "polygon", "01", [[50,80],[150,50],[100,10],[0,10],[50,80]]) |
|
929 | 774 |
|
930 |
addFeature(layer2, "line", "01", [[50,80],[150,50],[100,10],[0,10],[50,80]]) |
|
931 |
|
|
932 |
#Modify all values in one column |
|
933 |
modifyFeatures(layer1, "campo1", "Points_gsoc") |
|
934 |
modifyFeatures(layer2, "campo1", "Lines_gsoc") |
|
935 |
|
|
936 |
#Modify schema |
|
937 |
addField(layer1,"Name") |
|
938 |
removeField(layer1,"Surname") |
|
939 |
|
|
940 |
##Execute SEXTANTE |
|
941 |
#r = geoprocess("perturbatepointslayer", LAYER = currentLayer(),MEAN = 5, STDDEV = 5 ) |
|
942 |
""" |
|
943 |
#layer = gvsig.currentView().getLayer("line_04.shp") |
|
944 |
#newLayer(layer, "C:/gvsig/gvpy_test006.shp") |
|
945 |
#layer2 = copyLayer(layer, "C:/gvsig/gvpy_copylayer_012.shp") |
|
946 |
#v = copyLayer(layer, "C:/gvpy_copylayer_new_06.shp") |
|
947 |
#layer = gvsig.currentView().getLayer("gvpy_copylayer_new_06") |
|
948 |
#addFeature(v, "Camino", [[50,00],[50,50],[10,10],[0,1],[50,18]]) |
|
949 |
|
|
950 |
#Basics field |
|
951 |
""" |
|
952 |
addField(v, "Direccion") |
|
953 |
modifyFeatures(v, "Direccion", "Av") |
|
954 |
removeField(v, "Direccion") |
|
955 |
""" |
|
956 |
|
|
957 |
""" |
|
958 |
#EJEMPLO 1 |
|
959 |
#New shapes |
|
960 |
layer = gvpy.runalg("randomvector", 20, gvpy.TYPE_LINE, EXTENT=[0,0,0,500,500,0], OUTVIEW="Po1") |
|
961 |
#layer = gvsig.currentLayer() |
|
962 |
#Advanced field |
|
963 |
removeField(layer, "ID") |
|
964 |
removeField(layer, "Distance") |
|
965 |
addField(layer, "ID") #Add fields |
|
966 |
addField(layer, "Distance", "STRING") |
|
967 |
addField(layer, "Long", "LONG") |
|
968 |
removeField(layer, "Long") #Remove field |
|
969 |
modifyFeatures(layer, "ID", "90") #Modify all features |
|
970 |
modifyField(layer, "ID", "LONG") #Modify type of field |
|
971 |
modifyField(layer, "Distance", "FLOAT") |
|
972 |
addFeature(layer, 1, 0, [[50,0],[1000,0]]) #Add new feature with geometry line |
|
973 |
for feature in layer.features(): |
|
974 |
perimeter = feature.geometry().perimeter() |
|
975 |
modifyFeature(layer, feature, "Distance", perimeter) #Modify each feature |
|
976 |
|
|
977 |
pass |
|
978 |
#FIN EJEMPLO 1 |
|
979 |
""" |
|
980 |
|
|
981 |
#modifyFeatures(gvsig.currentLayer(), "ID", 100, "Distance == 90") |
|
982 |
layer = gvsig.currentLayer() |
|
983 |
for feature in gvsig.currentLayer().features(): |
|
984 |
value = feature.Distance |
|
985 |
#modifyFeature(layer, feature, "ID", distance) |
|
986 |
feature.edit() |
|
987 |
feature.set("ID", value) |
|
988 |
layer.update(feature) |
|
989 |
#model2script("C://gsoc//test02.model", "C://gsoc//nuevoScript.py") |
|
990 |
print "END TEST" |
|
991 |
|
|
992 |
def copyLayerFeatures2Layer(layer1, layer2): |
|
993 |
for i in layer1.features(): |
|
994 |
layer2.append(i.getValues()) |
|
995 |
layer2.commit() |
|
996 |
|
|
997 |
def copyLayer(layer, path): |
|
998 |
output = newLayer(layer, path) |
|
999 |
copyLayerFeatures2Layer(layer, output) |
|
1000 |
#addLayerView(output) |
|
1001 |
return output |
|
1002 |
|
|
1003 |
def newLayer(layer, path, geometryType=None): |
|
1004 |
CRS = layer.getProjectionCode() |
|
1005 |
schema = gvsig.createSchema(layer.getSchema()) |
|
1006 |
if geometryType==None: geometryType = layer.getTypeVectorLayer().getType() |
|
1007 |
output = gvsig.createShape( schema, path, CRS=CRS, geometryType=geometryType ) |
|
1008 |
gvsig.currentView().addLayer(output) |
|
1009 |
return output |
|
1010 |
|
|
1011 |
def addLayerView(layer): |
|
1012 |
gvsig.currentView().addLayer(layer) |
|
1013 |
|
|
1014 |
def addFeature(layer, *params, **kwparams): |
|
1015 |
#IN: layer, feature params + geometry |
|
1016 |
typeLayer = layer.getTypeVectorLayer().name |
|
1017 |
#if kwparams != {}: |
|
1018 |
# layer.append(kwparams) |
|
1019 |
# layer.commit() |
|
1020 |
# return |
|
1021 |
|
|
1022 |
if "COMMIT" in kwparams: |
|
1023 |
pass |
|
1024 |
else: |
|
1025 |
COMMIT=1 |
|
1026 |
if params != (): |
|
1027 |
schValues = layer.getSchema().getAttrNames() |
|
1028 |
values = {} |
|
1029 |
itera = iter((list(params))) |
|
1030 |
value = itera.next() |
|
1031 |
for sch in schValues: |
|
1032 |
#Si el campo a modificar es una geometria |
|
1033 |
#print "Comprobación:", sch, isinstance(value, list) |
|
1034 |
#re comprobacion si es campo geometry |
|
1035 |
#bug: Comprobar si es lista o objeto geom en primer if |
|
1036 |
#... sch == "Geometry" and ES UNA LISTA |
|
1037 |
#... sino copia el valor directamente: caso de pasar geometrias |
|
1038 |
if sch == "GEOMETRY": |
|
1039 |
print typeLayer |
|
1040 |
if typeLayer == "Point2D": |
|
1041 |
if isinstance(value, list): |
|
1042 |
values[sch] = geom.createPoint(value[0],value[1]) |
|
1043 |
elif typeLayer == "MultiCurve2D": |
|
1044 |
if isinstance(value, list): |
|
1045 |
values[sch] = list2geomcurve(value) |
|
1046 |
elif typeLayer == "MultiSurface2D": |
|
1047 |
if isinstance(value, list): |
|
1048 |
values[sch] = list2geompoly(value) |
|
1049 |
else: #Si son geometrias |
|
1050 |
values[sch] = value |
|
1051 |
else: |
|
1052 |
values[sch] = value |
|
1053 |
try: |
|
1054 |
value = itera.next() |
|
1055 |
except: |
|
1056 |
break |
|
1057 |
layer.append(values) |
|
1058 |
if COMMIT==1: layer.commit() |
|
1059 |
print "Add feature ", params, " to ", layer |
|
1060 |
|
|
1061 |
def list2geompoly(listPoints): |
|
1062 |
#IN: list[[x,y],...] |
|
1063 |
#OUT: geometry polygon |
|
1064 |
geometry = geom.createGeometry(3) |
|
1065 |
for point in listPoints: |
|
1066 |
geometry.addVertex(geom.createPoint(point[0],point[1])) |
|
1067 |
if listPoints[0] != listPoints[len(listPoints)-1]: |
|
1068 |
geometry.addVertex(geom.createPoint(listPoints[0][0], listPoints[0][1])) |
|
1069 |
return geometry |
|
1070 |
|
|
1071 |
def list2geomcurve(listPoints): |
|
1072 |
#IN: list [[x,y],...] |
|
1073 |
#OUT: geometry line |
|
1074 |
geometry = geom.createGeometry(2) |
|
1075 |
for point in listPoints: |
|
1076 |
geometry.addVertex(geom.createPoint(point[0],point[1])) |
|
1077 |
return geometry |
|
1078 |
|
|
1079 |
def modifyFeatures(layer, field, value, COMMIT=1,FILTER=None): |
|
1080 |
#IN: layer, field, new value |
|
1081 |
if FILTER == None: |
|
1082 |
features = layer.features() |
|
1083 |
else: |
|
1084 |
features = layer.features(FILTER) |
|
1085 |
|
|
1086 |
for feature in features: |
|
1087 |
feature.edit() |
|
1088 |
feature.set(field, value) |
|
1089 |
layer.update(feature) |
|
1090 |
if COMMIT==1: layer.commit() |
|
1091 |
print "Modify feature ", layer.name, field, value |
|
1092 |
|
|
1093 |
def showFields(layer): |
|
1094 |
#IN: layer |
|
1095 |
#OUT: str(atributos) |
|
1096 |
print layer.getSchema().getAttrNames() |
|
1097 |
|
|
1098 |
def addField(layer,field, sType = "STRING",iSize=20): |
|
1099 |
#IN: layer, field, *sType, *iSize) |
|
1100 |
#OUT: layer |
|
1101 |
#addField(layer, "nombre") |
|
1102 |
schema = gvsig.createSchema(layer.getSchema()) |
|
1103 |
schema.modify() |
|
1104 |
if isinstance(field,str): schema.append(field,sType,iSize) |
|
1105 |
layer.edit() |
|
1106 |
layer.updateSchema(schema) |
|
1107 |
layer.commit() |
|
1108 |
print "Add field ", field, " to ", layer.name |
|
1109 |
return layer |
|
1110 |
|
|
1111 |
def modifyField(layer, field, iType="STRING", iSize=20): |
|
1112 |
temp = [] |
|
1113 |
for i in layer.features(): |
|
1114 |
temp.append(i.get(field)) |
|
1115 |
removeField(layer, field) |
|
1116 |
addField(layer, field, iType, iSize) |
|
1117 |
n = 0 |
|
1118 |
for i in layer.features(): |
|
1119 |
modifyFeature(layer, i, field, temp[n],COMMIT=0) |
|
1120 |
n += 1 |
|
1121 |
layer.commit() |
|
1122 |
print "Modify field type to: ", field, " in ", layer.name |
|
1123 |
|
|
1124 |
def modifyFeature(layer, feature, field, value, COMMIT=1): |
|
1125 |
feature.edit() |
|
1126 |
feature.set(field, value) |
|
1127 |
layer.update(feature) |
|
1128 |
print "Modify Feature field: ", field , " to ", value |
|
1129 |
if COMMIT==1: layer.commit() |
|
1130 |
|
|
1131 |
def removeField(layer, field): |
|
1132 |
#IN: layer, field |
|
1133 |
#OUT: layer |
|
1134 |
#removeField(layer, "apellido") |
|
1135 |
print "Campo %s eliminado" % (str(field)) |
|
1136 |
schema = layer.getSchema() |
|
1137 |
schema.modify() |
|
1138 |
if isinstance(field,str): schema.remove(field) |
|
1139 |
else: return |
|
1140 |
layer.edit() |
|
1141 |
layer.updateSchema(schema) |
|
1142 |
layer.commit() |
|
1143 |
return layer |
|
1144 |
|
|
1145 |
|
|
1146 | 775 |
def model2script(pathXML, pathFile): |
1147 | 776 |
#eliminar la ultima linea |
1148 | 777 |
#pathXML = commonsdialog.openFileDialog("Selecciona archivo", 'C:/gsoc/') |
Also available in: Unified diff