Hi Óscar, always me.. :-) is there also a way to write a layer in a shapefile directly from a script or do I have to load it in gvSIG and save it from there?
Thanks Silvia On Fri, Oct 14, 2016 at 1:54 PM, Silvia Franceschi < silvia.frances...@gmail.com> wrote: > Thank you Óscar for your detailed explanation and your help! > > Silvia > > On Fri, Oct 14, 2016 at 11:59 AM, Óscar Martínez <omarti...@gvsig.com> > wrote: > >> Reading again your email maybe this also answer your question: >> >> Inside the script you can make a: print dir(layer) and it will show you >> the avalaible functions of that type of object. >> >> El 14/10/16 a las 11:26, Óscar Martínez escribió: >> >> Hi Silvia, >> >> >> | Is there a way to know which functions are implemented for each >> feature type in gvSIG scripting? >> >> If i understand correctly your question.. Quick answer, all. Since 2.3, >> we are not working with a different library for scripting. We improved the >> way to work directly with the JAVA API, plus new functions (like.. >> createShape(schema)), methods (like.. getValues() over a feature to return >> a python dict) and new classes (like.. FormPanel to create scripts with >> graphical interface), all to make it easy and quick to work from scripting. >> Not sure if is a good way to say it (just to explain this better), but we >> could say right now is the java api who hasn't have all the funcions >> implemented. >> >> As you can see in the script, type(layer) and type(features) are java >> objects. >> >> Running script. >> layer type: <type 'org.gvsig.fmap.mapcontext.layers.vectorial.FLyrVect'> >> layer features: <type 'org.gvsig.fmap.dal.feature.im >> pl.featureset.DefaultFeatureSet'> >> Script terminated. >> >> So, you should be able to check the javadocs, and use all the functions >> that are in there: >> >> http://downloads.gvsig.org/download/gvsig-desktop-testing/ >> dists/2.3.0/javadocs/html/ >> >> http://downloads.gvsig.org/download/gvsig-desktop-testing/ >> dists/2.3.0/javadocs/html/org/gvsig/fmap/mapcontext/layers/ >> vectorial/FLyrVect.html >> >> http://downloads.gvsig.org/download/gvsig-desktop-testing/ >> dists/2.3.0/javadocs/html/org/gvsig/fmap/dal/feature/impl/ >> featureset/DefaultFeatureSet.html >> >> >> Plus all from scripting (we are updating this javadoc, soon will be more >> complete): >> >> http://downloads.gvsig.org/download/gvsig-desktop-testing/ >> dists/2.3.0/docs/javadocs/html/ >> >> >> Deleting features should be something similar to this (delete all >> features with a filter "ID < 10"): >> # encoding: utf-8 >> >> from gvsig import * >> >> def main(*args): >> """ Delete features inside a layer""" >> >> layer = currentLayer() >> features = layer.features("ID < 10") #DefaultFeatureSet >> >> >> print "layer type: ", type(layer) >> print "layer features: ", type(features) >> >> layer.edit() >> >> for i in features: >> ivalues = i.getValues() >> print ivalues >> features.delete(i)#delete over the featureset >> >> layer.commit() >> >> >> Best regards, >> Óscar >> >> >> El 14/10/16 a las 10:53, Silvia Franceschi escribió: >> >> Hi Óscar, >> the scripts work fine, many thanks again! >> May I just ask you one more question? >> Is there the possibility to remove a feature from a list of features? >> like featureslist.remove() or something like that? >> I tried with remove and delete but it seems that these do not exist, any >> idea? >> >> Is there a way to know which functions are implemented for each feature >> type in gvSIG scripting? >> >> Thanks >> >> Silvia >> >> >> On Thu, Oct 13, 2016 at 6:25 PM, Silvia Franceschi < >> silvia.frances...@gmail.com> wrote: >> >>> Thank you Óscar, >>> to tell you the truth I started to use currentLayer but, since I need to >>> work with two layers I didn't know how to do and tried to load data from >>> files. >>> And in any case the final script should work with a list of shapefiles >>> in a folder, so, I will for sure move to the file based data source at some >>> point. >>> >>> I was following the documentation you linked, it is very useful to start >>> to get familiar with the scripting environment, thanks! >>> >>> I will try the scripts you sent to me and let you know if I will solve >>> my problems. >>> >>> Thank you very much for the quick answer! >>> >>> Silvia >>> >>> >>> >>> >>> On Thu, Oct 13, 2016 at 6:00 PM, Óscar Martínez <omarti...@gvsig.com> >>> wrote: >>> >>>> Hi! >>>> >>>> If i understood correctly, you don't need to use the getSchema >>>> function. I'm going to give you my solution with two test layers, give it a >>>> try and tell us if that works for you or what exactly more do you need. If >>>> you don't understand some part of the script i can explain it better. Some >>>> help is inside the script, step by step. >>>> >>>> I recommend to you to start learning scripting using the functions >>>> currentLayer() (current layer selection in the table of contents) or >>>> currentView().getLayer("layername") instead of using loadShapeFile >>>> everytime. It's easier if you just have a loaded layer in your view and >>>> access to each one each layer with currentLayer o getLayer. >>>> >>>> If someone on the list want to know more about this part of scripting, >>>> here are some links from the spanish docs (hope soon in english) related to >>>> this post: >>>> >>>> Access to features: http://downloads.gvsig.org/dow >>>> nload/web/html/es/scripting_devel_guide/2.3/acceso_a_objetos >>>> .html#entidad >>>> >>>> Spatial operations: http://downloads.gvsig.org/dow >>>> nload/web/html/es/scripting_devel_guide/2.3/modulo_geom.html >>>> #operaciones-espaciales >>>> >>>> Current functions: http://downloads.gvsig.org/dow >>>> nload/web/html/es/scripting_devel_guide/2.3/acceso_a_objetos.html >>>> >>>> >>>> Any trouble here we are! >>>> >>>> >>>> Best regards, >>>> >>>> Óscar >>>> >>>> >>>> >>>> Script (layers of this test are in EPSG:25830) (feature AREA1 is a >>>> multipolygon): >>>> >>>> # encoding: utf-8 >>>> >>>> import gvsig >>>> >>>> def main(*args): >>>> # You need to have one view with to layers opened on it >>>> # The name of the layers will be the name that appear >>>> # in the table of contents of the view >>>> >>>> # To access to the layers that are already loaded in gvSIG >>>> # gvsig.currentView() give us access to the opened view >>>> # gvsig.currentView().getLayer(name) give us access a specified >>>> layer >>>> points = gvsig.currentView().getLayer("points") >>>> area = gvsig.currentView().getLayer("area") >>>> >>>> # Access to the features >>>> features_points = points.features() >>>> features_area = area.features() >>>> >>>> # if you want access to a selection of features, not all >>>> # you will have to change `features()` with `getSelection()` >>>> #features_points = points.getSelection() >>>> #features_area = area.getSelection() >>>> >>>> for farea in features_area: >>>> print "\nChecking : ", farea.get("localId") >>>> geom_farea = farea.geometry() >>>> >>>> #for each area, check all points without intersection >>>> for fpoint in features_points: >>>> geom_fpoint = fpoint.geometry() >>>> >>>> if not geom_farea.intersects(geom_fpoint): >>>> print "\tArea: ", farea.get("localId"), " intersects >>>> with :", fpoint.get("ID") >>>> # work with the feature >>>> >>>> Console output: >>>> >>>> Running script testing_silvia_intersec. >>>> >>>> Checking : AREA1 >>>> Area: AREA1 intersects with : 101 >>>> Area: AREA1 intersects with : 102 >>>> Area: AREA1 intersects with : 103 >>>> Area: AREA1 intersects with : 107 >>>> >>>> Checking : AREA2 >>>> Area: AREA2 intersects with : 103 >>>> Area: AREA2 intersects with : 104 >>>> Area: AREA2 intersects with : 105 >>>> Area: AREA2 intersects with : 106 >>>> Area: AREA2 intersects with : 107 >>>> Area: AREA2 intersects with : 108 >>>> Script testing_silvia_intersec terminated. >>>> >>>> >>>> >>>> El 13/10/16 a las 15:05, Silvia Franceschi escribió: >>>> >>>> Hi all, >>>> I am trying to write my first script in gvSIG and Python, I need to >>>> read a point shapefile and filter some elements that are outside a defined >>>> area. >>>> To do this I have to read two input layers, one with the points and one >>>> with the area and then work on each single features of the point layer. >>>> I started with the selection of the input layers using a filechooser >>>> dialog (commonsdialog.filechooser) and then I need to obtain the schema of >>>> these layers, but it seems that the object filechooser do not have the >>>> .getSchema() function. >>>> Do you have any idea on how to obtain the schema from a vector layer >>>> selected using the filechooser? >>>> >>>> Thanks in advance for any help! >>>> >>>> Silvia >>>> >>>> >>>> -- >>>> ing. Silvia Franceschi >>>> Via Latemar, 22 >>>> 38030 Castello di Fiemme (TN) >>>> >>>> tel: 0039 -3384501332 <0039%20-3384501332> >>>> >>>> >>>> _______________________________________________ >>>> Gvsig_internacional mailing listgvsig_internacio...@listserv.gva.es >>>> >>>> To see the archives, edit your preferences or unsubscribe from this >>>> mailing list, please access this url: >>>> https://listserv.gva.es/cgi-bin/mailman/listinfo/gvsig_internacional >>>> >>>> _______________________________________________ Gvsig_internacional >>>> mailing list Gvsig_internacional@listserv.gva.es To see the archives, >>>> edit your preferences or unsubscribe from this mailing list, please access >>>> this url: https://listserv.gva.es/cgi-bin/mailman/listinfo/gvsig_inter >>>> nacional >>> >>> -- >>> ing. Silvia Franceschi Via Latemar, 22 >>> 38030 Castello di Fiemme (TN) tel: 0039 -3384501332 >>> >> -- >> ing. Silvia Franceschi Via Latemar, 22 >> 38030 Castello di Fiemme (TN) tel: 0039 -3384501332 >> >> _______________________________________________ >> Gvsig_internacional mailing listgvsig_internacio...@listserv.gva.es >> >> To see the archives, edit your preferences or unsubscribe from this mailing >> list, please access this url: >> https://listserv.gva.es/cgi-bin/mailman/listinfo/gvsig_internacional >> >> _______________________________________________ >> Gvsig_internacional mailing listgvsig_internacio...@listserv.gva.es >> >> To see the archives, edit your preferences or unsubscribe from this mailing >> list, please access this url: >> https://listserv.gva.es/cgi-bin/mailman/listinfo/gvsig_internacional >> >> >> _______________________________________________ >> Gvsig_internacional mailing list >> Gvsig_internacional@listserv.gva.es >> >> To see the archives, edit your preferences or unsubscribe from this >> mailing list, please access this url: >> >> https://listserv.gva.es/cgi-bin/mailman/listinfo/gvsig_internacional >> >> > > > -- > ing. Silvia Franceschi > Via Latemar, 22 > 38030 Castello di Fiemme (TN) > > tel: 0039 -3384501332 > -- ing. Silvia Franceschi Via Latemar, 22 38030 Castello di Fiemme (TN) tel: 0039 -3384501332
_______________________________________________ Gvsig_internacional mailing list Gvsig_internacional@listserv.gva.es To see the archives, edit your preferences or unsubscribe from this mailing list, please access this url: https://listserv.gva.es/cgi-bin/mailman/listinfo/gvsig_internacional