Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it L'avatar di Kahm
    Registrato dal
    Dec 2004
    residenza
    Rome
    Messaggi
    3,419

    record piu vicino geolocation su DB access

    ho un piccolo DB access in cui devo calcolare i record piu vicini, avendo a disposiione le coordinate dei punti e come input quello dell'utente
    ho provato con


    codice:
    Select top 20 * From Annunci  where SQR((-41.847 -Latitudine)^2) + SQR((-12.514 - Longitudine)^2) < 50
    codice:
    SELECT citta
    FROM Annunci2
    ORDER BY (Abs(Left(Latitudine,7)-41.847)+Abs(Left(Longitudine,7)-12.514))/2;


    nulla sembra funzionare, i dati che vedete nelle query sql riguradano un punto a caso a ROma
    quindi dovrei visualizzare SOLO ipunti di ROma see filtro per raggio 50KM


    da qui è possibile scaricare il dB con alcuni record

    http://www.suale.it/suale.it/prova/Pet.zip
    NN vi diro mai chi sono in realta,
    tutti i miei 3D sono orfani, non insistete per farmi rispondere ai 3D aperti da me

  2. #2
    Utente di HTML.it L'avatar di nman
    Registrato dal
    Jan 2011
    residenza
    Milano
    Messaggi
    1,300
    Quote Originariamente inviata da Kahm Visualizza il messaggio
    codice:
    ....... SQR((-41.847 -Latitudine)^2) + SQR((-12.514 - Longitudine)^2) ......
    Vedo diversi problemini,
    Cerchi di applicare il teorema di pitagora a delle latitudini e longitudini che non sono lunghezze bensì angoli ????

    Potrebbe avere un senso all'equatore perche (piu o meno) l'incremento di angolo corrisponde all'incremento di kilometri
    ma pero al polo con 1 millimetro puoi fare il giro del mondo intorno al suo asse ???
    (so di non essermi spiegato ma certamente mi hai capito)

    poi pitagora prevede che la radice quadrata la applichi solo 1 volta ?????

    ------------------------------------

    quindi se vuoi andare in approssimazione a Roma allora devi calcolarti i 2 coefficienti di Roma (CoefLa e CoefLg) per cui devi moltiplicare la differenza di latitudine e longitudine per toovare i Kilometri
    codice:
    Sqr( ( ( (41,847-[Latitudine])  * CoefLa ) ^2 )  +  (  ( (12,514-[Longitudine])  *  CoefLg ) ^2  )  )
    ----------------------------------------

    PS Quanto suggerito è solo in approssimazione perche vuoi trovare i primi 20, diversamente sarebbe molto piu complesso

    Adesso devo andare quindi non mi dilungo ....

    .
    Ultima modifica di nman; 26-07-2019 a 07:16

  3. #3

  4. #4
    Utente di HTML.it L'avatar di Kahm
    Registrato dal
    Dec 2004
    residenza
    Rome
    Messaggi
    3,419
    Quote Originariamente inviata da optime Visualizza il messaggio
    eh insomma, alcune funzioni access non le ha
    comunque ho aggiornato il DB mettendo delle funzioni nel modulo, per ovviare a questa limitazione
    quindi ora ho sempre un problema ma ho quasi finito ed è piu semplice:

    facendo la query
    codice:
    SELECT top 1 Annunci2.citta, distance(41.884316,12.436742,latitudine,longitudine,"K")  as distance
    FROM Annunci2 where codannuncio=31
    mi da tutti valori sballati

    mentre facendo una query dando i valori secchi invece di prenderli dal DB
    codice:
    SELECT top 1 Annunci2.citta,distance(41.884316, 12.436742,41.8368278,12.4365234, "K") as distance
    FROM Annunci2
    la distanza in KM è giusta

    non capisco perchè in un modo funziona e l'altro NO
    Ultima modifica di Kahm; 26-07-2019 a 12:22
    NN vi diro mai chi sono in realta,
    tutti i miei 3D sono orfani, non insistete per farmi rispondere ai 3D aperti da me

  5. #5
    Utente di HTML.it L'avatar di Kahm
    Registrato dal
    Dec 2004
    residenza
    Rome
    Messaggi
    3,419
    Quote Originariamente inviata da nman Visualizza il messaggio

    quindi se vuoi andare in approssimazione a Roma allora devi calcolarti i 2 coefficienti di Roma (CoefLa e CoefLg) per cui devi moltiplicare la differenza di latitudine e longitudine per toovare i Kilometri
    codice:
    Sqr( ( ( (41,847-[Latitudine])  * CoefLa ) ^2 )  +  (  ( (12,514-[Longitudine])  *  CoefLg ) ^2  )  )
    ----------------------------------------

    .
    non mi è chiaro cosa inserire come coefficente
    sia latitudine che longitudine
    NN vi diro mai chi sono in realta,
    tutti i miei 3D sono orfani, non insistete per farmi rispondere ai 3D aperti da me

  6. #6
    Utente di HTML.it L'avatar di nman
    Registrato dal
    Jan 2011
    residenza
    Milano
    Messaggi
    1,300
    Quote Originariamente inviata da Kahm Visualizza il messaggio
    non mi è chiaro cosa inserire come coefficente
    sia latitudine che longitudine
    Se il centro del tuo mondo è: 41.847 - 12.514

    Vai su GoogleMaps e ti cerchi con pazienza 41.847 - 13.514
    ti sei spostato a Dx di 1 grado
    Ti misuri i kilometri sempre con GoogleMaps (vado a caso 12.5 Km)
    ebbene 12.5 è il tuo CoefLg

    Vai su GoogleMaps e ti cerchi con pazienza 42.847 - 12.514
    ti sei spostato in alto di 1 grado
    Ti misuri i kilometri sempre con GoogleMaps (vado a caso 25.4 Km)
    ebbene 25.4 è il tuo CoefLa

    Attenzione, questo metodo è approssimativo e vale solo su zone limitate di terra
    perche al polo nord il tuo CoefLg sara di 0.00001
    mentre CoefLa sarà pressocchè invariato

    .

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2019 vBulletin Solutions, Inc. All rights reserved.