SPLIT LINES WITH POINTS, THE SPATIALITE WAY - aiuto per script SQL

classic Classic list List threaded Threaded
3 messages Options
Reply | Threaded
Open this post in threaded view
|

SPLIT LINES WITH POINTS, THE SPATIALITE WAY - aiuto per script SQL

pigreco
Buongiorno a tutti e sereno 1° maggio;

Nel tempo libero mi diletto a scrivere i miei (gis)appunti [0] nel mio blog
(https://pigrecoinfinito.wordpress.com/); da tempo ho cercato una soluzione
al problema in oggetto e credo di aver trovato una soluzione, da prove
effettuate sembra funzionare bene.

Non è tutta farina del mio sacco, il WORKFLOW è simile a quello adottato da
Giovanni Manghi in questo articolo [1] per il caso postgis;

ho realizzato uno script SQL [2] da utilizzare in spatialite_gui o tramite
cli, ma in entrambi i casi ho sempre degli errori che non riesco a spiegarmi
e quindi a risolvere; (eseguendo i singoli step tutto funziona bene, ma
lanciando l'intero script SQL viene fuori sempre un errore, nel caso in
esame un errore alla row 39 , che non esiste!!!)
allego database di esempio [3]

saluti e grazie

----
[0]
https://pigrecoinfinito.wordpress.com/2018/04/28/split-lines-with-points-the-spatialite-way/
[1]
https://mygisnotes.wordpress.com/2017/01/01/split-lines-with-points-the-postgis-way/
[2] https://gist.github.com/pigreco/6fe0e61938ae91a9a1f6f6eb720e531b

[3] https://mega.nz/#!AUg33RDK!rzmFRaP6uaPUlJGCiNYkRYVVkyqsIu6NvIiSZ7-ODaA

-----
https://pigrecoinfinito.wordpress.com/
--
Sent from: http://gfoss-geographic-free-and-open-source-software-italian-mailing.3056002.n2.nabble.com/
_______________________________________________
[hidden email]
http://lists.gfoss.it/cgi-bin/mailman/listinfo/gfoss
Questa e' una lista di discussione pubblica aperta a tutti.
I messaggi di questa lista non hanno relazione diretta con le posizioni dell'Associazione GFOSS.it.
796 iscritti al 28/12/2017
Reply | Threaded
Open this post in threaded view
|

Re: SPLIT LINES WITH POINTS, THE SPATIALITE WAY - aiuto per script SQL

a.furieri
On Tue, 1 May 2018 01:42:48 -0700 (MST), pigreco wrote:
> Buongiorno a tutti e sereno 1° maggio;
>

altrettanto a te.


> lanciando l'intero script SQL viene fuori sempre un errore, nel caso
> in
> esame un errore alla row 39 , che non esiste!!!)
>

no, a me (su Win7 Pro 64 bit) risultano si degli errori, ma in
posizioni
differenti, per la pecisione alle linee 30 e 36, che coincidono con le
ultime due chiamate alla RecoverGeometryColumn().

ho provato a commentare quelle due linee e tutto funziona bene; a
questo
punto ho riscritto quelle due righe "a mano" (niente cut&paste) ed ho
cancellato le due righe originali.
ora funziona tutto bene :-D

due possibili spiegazioni alternative:
1) misteri teologici di ordine superiore che trascendono le normali
    capacita' di indagine della Scienza Galileiana.
2) qualche caratteraccio "zozzo" che si e' infilato dentro al tuo
UTF-8,
    invisibile ad occhio nudo ma comunque capace di mettere in crisi
    il parser SQL di SQLite.

ovviamente quella valida e' la 2)
i due files originale/corretto hanno dimensioni diverse (uno e' piu'
lungo di 2 bytes), e sia "diff" che "cmp" riportano delle differenze
esattamente per le linee 30 e 36.
andando a scavare di fino facendo un hex dump del tuo file vedrai che
il punto-e-virgola che chiude le due righe incriminate e' codificato
in modo diverso tra le due copie originale/modificata.

la spiegazione piu' verosimile e' che tu per scrivere quello Script
SQL hai usato piu' editor differenti, almeno uno dei quali ha idee
un po' stravaganti sulla corretta codifica dei caratteri UTF-8.
probabilmente l'errore si e' verificato una sola volta, ma poi si
e' propagato grazie alle fantastiche meraviglie del "taglia&incolla".
ma anche lavorare un po' su Win ed un po' su Linux potrebbe
facilmente aiutare ad incappare in incidenti di questo tipo ;-)

ciao Sandro
_______________________________________________
[hidden email]
http://lists.gfoss.it/cgi-bin/mailman/listinfo/gfoss
Questa e' una lista di discussione pubblica aperta a tutti.
I messaggi di questa lista non hanno relazione diretta con le posizioni dell'Associazione GFOSS.it.
796 iscritti al 28/12/2017
Reply | Threaded
Open this post in threaded view
|

Re: SPLIT LINES WITH POINTS, THE SPATIALITE WAY - aiuto per script SQL

pigreco
a.furieri wrote

> On Tue, 1 May 2018 01:42:48 -0700 (MST), pigreco wrote:
>
> la spiegazione piu' verosimile e' che tu per scrivere quello Script
> SQL hai usato piu' editor differenti, almeno uno dei quali ha idee
> un po' stravaganti sulla corretta codifica dei caratteri UTF-8.
> probabilmente l'errore si e' verificato una sola volta, ma poi si
> e' propagato grazie alle fantastiche meraviglie del "taglia&incolla".
> ma anche lavorare un po' su Win ed un po' su Linux potrebbe
> facilmente aiutare ad incappare in incidenti di questo tipo ;-)
>
> ciao Sandro

Come scritto nella prima mail, il mio script deriva da quello di G. Manghi,
cioè ho copiato e incollato su NotePad++ lo script e successivamente
modificato.

Altra cosa che ho notato (grazie a Andrea Borruso) che copiando ed
incollando in spatialite_gui il seguente SQL statement:

CREATE TABLE "points_over_lines" AS
SELECT a.id AS id,ST_ClosestPoint(ST_Union(b.geom), a.geom) AS geom
FROM civici a, strade b
GROUP BY a.geom,a.id;
SELECT RecoverGeometryColumn('points_over_lines','geom',3004,'POINT','XY');

l'esecusione funziona ma restituisce come nome colonna ';' ( vedi immagine
1) e non RecoverGeometryColumn('points_over_lines','geom',3004,'POINT','XY')
(vedi immagine 2)

<http://gfoss-geographic-free-and-open-source-software-italian-mailing.3056002.n2.nabble.com/file/t395773/split_strano.jpg>

per ottenere come colonna del risultato:
RecoverGeometryColumn('points_over_lines','geom',3004,'POINT','XY')
ho cancellato e riscritto il ;


Ora funziona tutto bene, grazie.

-----
https://pigrecoinfinito.wordpress.com/
--
Sent from: http://gfoss-geographic-free-and-open-source-software-italian-mailing.3056002.n2.nabble.com/
_______________________________________________
[hidden email]
http://lists.gfoss.it/cgi-bin/mailman/listinfo/gfoss
Questa e' una lista di discussione pubblica aperta a tutti.
I messaggi di questa lista non hanno relazione diretta con le posizioni dell'Associazione GFOSS.it.
796 iscritti al 28/12/2017