No problem at all! :)

Sorry, i'm not sure what do you want to do.. create a new shapefile and work with it? or export (make a copy) of a existing shapefile?



El 14/10/16 a las 15:33, Silvia Franceschi escribió:
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 <mailto: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 <mailto: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
        <http://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/>

        
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/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
        
<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/
        
<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
        <mailto: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 <mailto: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/download/web/html/es/scripting_devel_guide/2.3/acceso_a_objetos.html#entidad
                
<http://downloads.gvsig.org/download/web/html/es/scripting_devel_guide/2.3/acceso_a_objetos.html#entidad>

                Spatial operations:
                
http://downloads.gvsig.org/download/web/html/es/scripting_devel_guide/2.3/modulo_geom.html#operaciones-espaciales
                
<http://downloads.gvsig.org/download/web/html/es/scripting_devel_guide/2.3/modulo_geom.html#operaciones-espaciales>

                Current functions:
                
http://downloads.gvsig.org/download/web/html/es/scripting_devel_guide/2.3/acceso_a_objetos.html
                
<http://downloads.gvsig.org/download/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 <tel:0039%20-3384501332>


                _______________________________________________
                Gvsig_internacional mailing list
                Gvsig_internacional@listserv.gva.es
                <mailto: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
                
<https://listserv.gva.es/cgi-bin/mailman/listinfo/gvsig_internacional>
                _______________________________________________
                Gvsig_internacional mailing list
                Gvsig_internacional@listserv.gva.es
                <mailto: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
                
<https://listserv.gva.es/cgi-bin/mailman/listinfo/gvsig_internacional>


-- ing. Silvia Franceschi Via Latemar, 22
            38030 Castello di Fiemme (TN) tel: 0039 -3384501332
            <tel:0039%20-3384501332>

-- ing. Silvia Franceschi Via Latemar, 22
        38030 Castello di Fiemme (TN) tel: 0039 -3384501332
        <tel:0039%20-3384501332>

        _______________________________________________
        Gvsig_internacional mailing list
        Gvsig_internacional@listserv.gva.es
        <mailto: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
        <https://listserv.gva.es/cgi-bin/mailman/listinfo/gvsig_internacional>

        _______________________________________________
        Gvsig_internacional mailing list
        Gvsig_internacional@listserv.gva.es
        <mailto: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
        <https://listserv.gva.es/cgi-bin/mailman/listinfo/gvsig_internacional>
        _______________________________________________
        Gvsig_internacional mailing list
        Gvsig_internacional@listserv.gva.es
        <mailto: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
        <https://listserv.gva.es/cgi-bin/mailman/listinfo/gvsig_internacional>


-- ing. Silvia Franceschi Via Latemar, 22
    38030 Castello di Fiemme (TN) tel: 0039 -3384501332
    <tel:0039%20-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
_______________________________________________
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

Reply via email to