[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