Re: [Qgis-developer] Make QGIS interact with LibreCAD.

2013-04-22 Thread Diego Gnesi Bartolani
Hi Bernhard,

I'll take your opinion into account. I'm still in a preliminary phase
and I'm still deciding. I verified that adding shapefile support to
LibreCAD is relatively simple, due to the good architecture of
LibreCAD's IO and geometry classes. Now I'll test how hard is adding
advanced cad tools to QGIS and how much time it can require to me.
Then I'll compare all the pros and cons of the two solutions and I'll
start to work. I need to finish the work before september, when I'll
have to use it in my job).
I'm not an expert of the QGIS API, and I need to study the source code
and the documentation in order to know precisely how can I interact
with QGIS while drawing:

- changing the snapping behavior and override the default one when required;
- having context menus with CTRL + right click (like on AutoCAD);
- drawing temporary entities (i.e. to trace extension lines);
- forcing the pointer to move along specific directions inside the map canvas;
- fast accessing to vertices, lines and angles of the existing shapes,
also for polygons.

I also need to understand if I can do all these things from a plugin
or do I need to make changes to the QGIS source code (I'll try to
avoid this).
I'll update this threads with all my progresses in the next days.

Diego

2013/4/22 Bernhard Ströbl bernhard.stro...@jena.de:
 Hi Diego,

 some of my users with more complex editing tasks (and familiar with CAD
 software) are complaining about not having similar possibilities in QGIS and
 I admit that our CAD has much more to offer in that respect (snapping,
 construction), so thanks for the move.
 IMHO the best would be to have CAD-like functions in QGIS (strategy #1)
 because
 1) many people missing these functions already might use some CAD or another
 to get their work done and are exchanging data between the two systems (with
 all problems), so strategy #2 would simply exchange their CAD software (if
 they are willing to change)
 2) and more important: many things that work in CAD do not work in GIS and
 vice versa, e.g. CAD: line color, hatching, dimensioning, GIS:
 attributes. Splines could be resolved into polylines, resembling the
 original spline, though. In short words: CAD is about drawing, GIS is about
 data modelling. So if you have the functions in QGIS you can more easily
 prevent users from doing silly things.

 my 2 ct

 Bernhard

 Am 21.04.2013 12:52, schrieb Diego Gnesi Bartolani:

 Hi,

 Yesterday I posted in a wrong thread, so I'm opening a new one. I'll
 copy and paste the previous message and add some notes. Sorry for the
 mess!

 Original post:

 I am an Italian archaeologist and an enthusiastic QGIS user. I do what
 I can to spread the knowledge about QGIS and other open source
 softwares to my university students (I am a contract professor at the
 Basilicata University and some days ago I've become contract professor
 at the Specialization School of Archeology of Udin, Venice and
 Trieste). The main difficulty I have with open source GIS is the
 advanced editing of vector layers. QGIS doesn't offer too much support
 for digitizing, the CAD Tools plugin has some useful functions but is
 far from being complete and the kind of interaction that it proposes
 is not very productive and time-saving (it's not a critic: CAD Tools
 saved my life a lot of time, and I want to thank the developers and
 maintainers). Many times, I had to convert my vector layers to dxf and
 back in order to perform some complex tasks (with all kind of
 conversion problems, like the preservation of the attributes values,
 etc.).
 I have some experience in programming (about ten years of
 developement, mainly in C# with the .NET Framework, before I switched
 to Linux), and I would like to try (only try, without promising
 anything!!) to implement complete CAD tools and functions (If there
 isn't and analogous project already active; in that case, nevermind!).

 I think that developing a CAD plugin from scratch is very hard to me
 and maybe not the better way to get good results, so I'm oriented to
 try to augment the interaction between QGIS and an existing CAD
 software (I'm thinking to LibreCAD). I thought to two possible
 strategies:

 1. Use the LibreCAD library and source code to develop a C++ QGIS plugin;
 2. Create a shapefile/spatialite/postgis driver for LibreCAD in order
 to edit those formats inside LibreCAD.
 3. Convert some layers of the QGIS project in a dxf file and back
 (each QGIS layer in a different layer of the final dxf file).

 I'm asking your opinion about which of those ways could be the faster
 or the better to implement, or which one is impossible to undertake
 according to your knowledge of the QGIS API.

 My doubts are:

 Strategy #1: Probably the ideal one, but does the implementation of
 complex snaps or constraints against the features of other layers
 (i.e. midpoint, parallels, etc.) require changes to the QGIS API, or
 all these operations can be contained on a plugin? Is it better to
 work

Re: [Qgis-developer] Make QGIS interact with LibreCAD.

2013-04-22 Thread Diego Gnesi Bartolani
Stefan and Bernahard, I don't want to create redundancy on the plugin
repository: if you're working on similar projects, maybe I can try to
help you instead of starting a brand new work.
Stefan and Antonio, by now i'm not focusing on specific tools (i.e.
extension vs. draw perpendicular), but I'm studying to find a sort of
design pattern that could allow faster drawing in respect to the
actual CAD Tools plugin. As Antonio said, it would be niche to have
something like the system provided by AutoCAD: while drawing, CTRL +
left btn to activate a specific constraint (i.e. perpendicular,
midpoint, etc.), then leave the mouse on a geometry for some seconds
to activate the constraint in respect to that entity, then move the
mouse and draw (or something similar and less like AutoCAD, to avoid
copyright problems). And of course, command line options.
If this plugin (?) is possible and can be designed with a sufficient
level of abstraction, it shall be easy to add new tools to it (i.e.
extension, tangent to a circle, etc. maybe reusing part of the code of
LibreCAD or of another open source CAD software).
By now, I need to create an experimental project on my pc before
saying what is possible to do in QGIS and what I'm able or not to do.

2013/4/22 Ziegler Stefan stefan.zieg...@bd.so.ch:
 I would like to see some changes in the snapping interface. If you got some
 30+ layers it is really difficult to find a specific layer. A layer tree for
 snapping just like for the legend would be great. And add the tree as tab
 like the browser.



 Von: qgis-developer-boun...@lists.osgeo.org
 [mailto:qgis-developer-boun...@lists.osgeo.org] Im Auftrag von
 antoniolocandro
 Gesendet: Montag, 22. April 2013 14:36
 An: bernhard.stro...@jena.de; diego.gn...@gmail.com
 Cc: qgis-developer@lists.osgeo.org


 Betreff: Re: [Qgis-developer] Make QGIS interact with LibreCAD.



 I would say add CAD tools within QGIS,



 1. Extend

 2. Trim

 3. Snapping environment

 4. digitise using either icons or commands on a console

 5. Intersection, etc.



 CAD tools are faster for digitising and more precise, having that
 possibility from within QGIS would make it so much better, I find digitising
 in QGIS very limited so for me right now its not to a point I can recommend
 it since in my industry we do a lot of complex shapes and edits.









 Sent from Samsung tablet


 Bernhard Ströbl bernhard.stro...@jena.de wrote:
 Hi Diego,

 based on a discussion [1] on this list a couple of months ago I started
 coding some of the missing tools as my time allows. This is going to be
 a Python plugin made from scratch.
 What I do have right now is:
 1) Dissolve multi geometries (code from Alexandre Neto's plugin)
 2) Split feature with feature of another layer
 3) Cut out feature with polygon of another layer

 I can share what I have on github. Maybe you want to have a look or join in.

 What would be the tools you have in mind (I do not know LibreCAD)?

 Bernhard


 [1]
 http://osgeo-org.1560.x6.nabble.com/more-advanced-editing-tools-td5019552.html

 Am 22.04.2013 13:29, schrieb Diego Gnesi Bartolani:
 Hi Bernhard,

 I'll take your opinion into account. I'm still in a preliminary phase
 and I'm still deciding. I verified that adding shapefile support to
 LibreCAD is relatively simple, due to the good architecture of
 LibreCAD's IO and geometry classes. Now I'll test how hard is adding
 advanced cad tools to QGIS and how much time it can require to me.
 Then I'll compare all the pros and cons of the two solutions and I'll
 start to work. I need to finish the work before september, when I'll
 have to use it in my job).
 I'm not an expert of the QGIS API, and I need to study the source code
 and the documentation in order to know precisely how can I interact
 with QGIS while drawing:

 - changing the snapping behavior and override the default one when
 required;
 - having context menus with CTRL + right click (like on AutoCAD);
 - drawing temporary entities (i.e. to trace extension lines);
 - forcing the pointer to move along specific directions inside the map
 canvas;
 - fast accessing to vertices, lines and angles of the existing shapes,
 also for polygons.

 I also need to understand if I can do all these things from a plugin
 or do I need to make changes to the QGIS source code (I'll try to
 avoid this).
 I'll update this threads with all my progresses in the next days.

 Diego

 2013/4/22 Bernhard Ströblbernhard.stro...@jena.de:
 Hi Diego,

 some of my users with more complex editing tasks (and familiar with CAD
 software) are complaining about not having similar possibilities in QGIS
 and
 I admit that our CAD has much more to offer in that respect (snapping,
 construction), so thanks for the move.
 IMHO the best would be to have CAD-like functions in QGIS (strategy #1)
 because
 1) many people missing these functions already might use some CAD or
 another
 to get their work done and are exchanging data between the two systems
 (with
 all problems

[Qgis-developer] Make QGIS interact with LibreCAD.

2013-04-21 Thread Diego Gnesi Bartolani
Hi,

Yesterday I posted in a wrong thread, so I'm opening a new one. I'll
copy and paste the previous message and add some notes. Sorry for the
mess!

Original post:

I am an Italian archaeologist and an enthusiastic QGIS user. I do what
I can to spread the knowledge about QGIS and other open source
softwares to my university students (I am a contract professor at the
Basilicata University and some days ago I've become contract professor
at the Specialization School of Archeology of Udin, Venice and
Trieste). The main difficulty I have with open source GIS is the
advanced editing of vector layers. QGIS doesn't offer too much support
for digitizing, the CAD Tools plugin has some useful functions but is
far from being complete and the kind of interaction that it proposes
is not very productive and time-saving (it's not a critic: CAD Tools
saved my life a lot of time, and I want to thank the developers and
maintainers). Many times, I had to convert my vector layers to dxf and
back in order to perform some complex tasks (with all kind of
conversion problems, like the preservation of the attributes values,
etc.).
I have some experience in programming (about ten years of
developement, mainly in C# with the .NET Framework, before I switched
to Linux), and I would like to try (only try, without promising
anything!!) to implement complete CAD tools and functions (If there
isn't and analogous project already active; in that case, nevermind!).

I think that developing a CAD plugin from scratch is very hard to me
and maybe not the better way to get good results, so I'm oriented to
try to augment the interaction between QGIS and an existing CAD
software (I'm thinking to LibreCAD). I thought to two possible
strategies:

1. Use the LibreCAD library and source code to develop a C++ QGIS plugin;
2. Create a shapefile/spatialite/postgis driver for LibreCAD in order
to edit those formats inside LibreCAD.
3. Convert some layers of the QGIS project in a dxf file and back
(each QGIS layer in a different layer of the final dxf file).

I'm asking your opinion about which of those ways could be the faster
or the better to implement, or which one is impossible to undertake
according to your knowledge of the QGIS API.

My doubts are:

Strategy #1: Probably the ideal one, but does the implementation of
complex snaps or constraints against the features of other layers
(i.e. midpoint, parallels, etc.) require changes to the QGIS API, or
all these operations can be contained on a plugin? Is it better to
work directly on QGIS vector layers or to create a plugin layer, edit
it and then commit the changes to the vector layer? The conversion
could help me to manage geometries in the way LibreCAD wants. Is it
possible in your opinion to have an interactive shell (i.e. draw the
first point, and then inserting the coordinates of the second point)?

Strategy #2: Probably the easier, but I should find a way to disable
some LibreCAD functions (i.e. the drawing of splines, or the drawing
of points on a line layer) without disseminating my changes all over
LibreCAD's source files. For this kind of solution I'll ask to the
developers of LibreCAD.

Strategy #3: The problem is on committing the changes of the dxf file
to the original layer: how to specify that a line in the dxf file must
replace the geometry of and existing record of the original spatialite
layer? Maybe it's impossible, it doesn't seem to me that I can put on
a dxf file the necessary metadata to preserve a link to the original
features.

What do you think? And what do you actually do when you have to draw
complex shapes on shapefiles or other vector layers?

NEW COMMENTS:

- Antonio Locandro is compiling a list of required CAD features. It
would be very useful, so please Antonio, get me a link to this list
when it's finished.
- The more I explore QGIS and LibreCAD source codes, the more I'm
convincing that integrating LibreCAD's tools on QGIS is very
difficult, and it would be easier to develop those tools from scratch.
To get the best results in a short amount of time, I think that I
could work to make shapefiles and other vector layers editable in
LibreCAD (using GDAL). This solution has the issue that it doesn't
allow to snap to other QGIS layers, nevertheless it could be of great
help and available in a reasonable amount of time. Then, when I have
more practice with QGIS and LibreCAD APIs, I'll try to do something
better (i.e. develop a QGIS driver for LibreCAD in order to open the
whole QGIS project in LibreCAD, organized by layers).
I'm waiting for the answers to an analogous thread in LibreCAD's mailing list:

http://forum.librecad.org/Using-LibreCAD-s-tools-on-GIS-vector-layers-td5707930.html

I think that I'm going to work on this project in a few weeks.

Let me know what do you think and if you have suggestions.

Diego Gnesi
___
Qgis-developer mailing list
Qgis-developer@lists.osgeo.org

Re: [Qgis-developer] Sextante test drive

2013-04-20 Thread Diego Gnesi Bartolani
Hi,

I am an italian archaeologist and an enthusiastic QGIS user. I do
what I can to spread the knowledge about QGIS and other open source
softwares to my university students (I am a contract professor at the
Basilicata University and some days ago I've become contract professor
at the Specialization School of Archeology of Udin, Venice and
Trieste).
The main difficulty I have with open source GIS is the advanced
editing of vector layers. QGIS doesn't offer too much support to
digitizing, the CAD Tools plugin has some useful functions but is far
from being complete and the kind of interaction that it proposes is
not very productive and time-saving (it's not a critic: CAD Tools
saved my life a lot of time, and I want to thank the developers and
maintainers). Many times, I had to convert my vector layers to dxf and
back in order to perform some complex tasks (with all kind of
conversion problems, like the preservation of the attributes values,
etc.).
I have some experience in programming (about ten years of
developement, mainly in C# with the .NET Framework, before I switched
to Linux), and I would like to try (only try, without promising
anything!!) to implement complete CAD tools and functions (I there
isn't and analogous project already active; in that case, nevermind!).

I think that developing a CAD plugin from scratch is very hard to me
and maybe not the better way to get good results, so I'm oriented to
try to augment the interaction between QGIS and an existing CAD
software (I'm thinking to LibreCAD). I thought to two possible
strategies:

1. Use the LibreCAD library and source code to develop a C++ QGIS plugin;
2. Create a shapefile/spatialite/postgis driver for LibreCAD in order
to edit those formats inside LibreCAD.
3. Convert some layers of the QGIS project in a dxf file and back
(each QGIS layer in a different layer of the final dxf file).

I'm asking your opinion about which of those ways could be the faster
or the better to implement, or which one is impossible to undertake
according to your knowledge of the QGIS API.

My doubts are:

Strategy #1: Probably the ideal one, but does the implementation of
complex snaps or constraints against the features of other layers
(i.e. midpoint, parallels, etc.) require changes to the QGIS API, or
all these operations can be contained on a plugin? Is it better to
work directly on QGIS vector layers or to create a plugin layer, edit
it and then commit the changes to the vector layer? The conversion
could help me to manage geometries in the way LibreCAD wants. Is it
possible in your opinion to have an interactive shell (i.e. draw the
first point, and then inserting the coordinates of the second point)?
Strategy #2: Probably the easier, but I should find a way to disable
some LibreCAD functions (i.e. the drawing of splines, or the drawing
of points on a line layer) without disseminating my changes all over
LibreCAD's source files. For this kind of solution I'll ask to the
developers of LibreCAD.
Strategy #3: The problem is on committing the changes of the dxf file
to the original layer: how to specify that a line in the dxf file must
replace the geometry of and existing record of the original spatialite
layer? Maybe it's impossible, it doesn't seem to me that I can put on
a dxf file the necessary metadata to preserve a link to the original
features.

What do you think? And what do you actually do when you have to draw
complex shapes on shapefiles or other vector layers?

Diego Gnesi

2013/4/20 Paolo Cavallini cavall...@faunalia.it:
 -BEGIN PGP SIGNED MESSAGE-
 Hash: SHA1

 Il 20/04/2013 10:52, Victor Olaya ha scritto:

 I have been thinking about changing all the options dialog. Doesn't
 look hard to do, so you can count on having this ready soon

 great, thanks. ready to help if necessary. I still think the appearance of 
 sextante
 dialogs do not seem too much in line with QGIS look, so maybe you can ask 
 someone to
 help with the GUI.

1) The classification of algorithms is done manually...and it is
 boring to do :-) SAGA and QGIS ones are already done, but I have
 to do the GRASS ones. However I am not sure about including GRASS, it
 is more complex to use. You can use a SAGA algorithm without knowing
 what SAGA is, but to use a GRASS one, you need to understand some
 GRASS ideas, so it is an advanced process, and the simplified
 algorithm classification shouldn't assume that. You can always change
 to the advanced view to use GRASS (now you can change directly from
 the toolbox, no need to go to the config dialog)

 Sorry I do not agree with you:
 * most GRASS commands, as they are incorporated into sextante (or in the GRASS
 plugin, by that way) are really straightforward to use; in courses people 
 often do
 not notice the difference
 * more importantly: GRASS is included in most if not all QGIS installation, 
 so you
 can rely on it; this is not the same for SAGA
 * GRASS modules have a proper manpage, while SAGA is sometimes very 

[Qgis-developer] hints for writing a C++ plugin

2013-03-15 Thread Diego Gnesi Bartolani
Hi,

I'm new to this mailing list. I am writing a plugin for QGIS in order to
perform complex cost surface analyses. I wrote some code in Python using
GDAL, and it works but it is too slow. So, I'm considering the possibility
to re-write the plugin in C++, but C++ plugins are less documented and I
have few questions:

- can they be deployed in the same way Pythons plugins are? (Or, if not,
what the user shall do to install the plugin and what have I to do deploy
it?)
- which library shall I use to read and write raster data from a C++ QGIS
plugin? GDAL or a specific QGIS API? And if the answer is GDAL, can I trust
that this library will be installed in final user's pc?

Thanks!!
___
Qgis-developer mailing list
Qgis-developer@lists.osgeo.org
http://lists.osgeo.org/mailman/listinfo/qgis-developer