[Gvsig_english] How to access schema from an input shapefile in scripting

Silvia Franceschi silvia.franceschi at gmail.com
Thu Oct 13 18:25:08 CEST 2016


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 <omartinez at 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
>
> Spatial operations: 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
>
>
> 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
>
>
> _______________________________________________
> Gvsig_internacional mailing listGvsig_internacional at 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 at 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
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://listserv.gva.es/pipermail/gvsig_internacional/attachments/20161013/fc064a13/attachment.html>


More information about the Gvsig_internacional mailing list