Forumi


Povratak   PC Ekspert Forum > Računala > Software > Web dizajn, programiranje i ostalo
Ime
Lozinka

Odgovori
 
Uređivanje
Staro 16.01.2011., 13:39   #1
svebee
/
 
Datum registracije: Oct 2006
Lokacija: /
Postovi: 2,053
Crtanje koordinata u JAVI

Tražim neki primjer kako jednostavno smjestiti hrpu koordinata 44-46 LAT i 14-17 LON na ekran veličine 1280x720 px.

Ima li nekakva klasa koju samo ubacim i crtam do mile volje?
svebee je offline   Reply With Quote
Staro 17.01.2011., 09:10   #2
burki
Umalo Premium
 
Datum registracije: Jan 2009
Lokacija: localhost
Postovi: 61
Nisam siguran točno što ti treba ali možda je ovo to što tražiš...
burki je offline   Reply With Quote
Oglasni prostor
Oglas
 
Oglas
Staro 17.01.2011., 12:00   #3
svebee
/
 
Datum registracije: Oct 2006
Lokacija: /
Postovi: 2,053
Citiraj:
Autor burki Pregled postova
Nisam siguran točno što ti treba ali možda je ovo to što tražiš...
Nisam siguran kako bih to uklopio u svoju priču? Koliko vidim to je samo - točka (da ne trebam odvojeno upisivati x,y već samo unesem point). Može nešto detaljnije?

Konkretnije, trebam postupak prenošenja Merkatorove kartografske projekcije (mercator map projection) koje koristi Google Maps na "papir" 1280x720px i tako da 14 bude lijeva stranica, 17 desna stranica, 44 donja i 46 gornja stranica "papir" tj. tog mog okvira - tako da sve točke budu jednoliko raspoređene unutar tog okvira.
svebee je offline   Reply With Quote
Staro 17.01.2011., 13:16   #4
FitzTN
Premium
Moj komp
 
FitzTN's Avatar
 
Datum registracije: Aug 2007
Lokacija: Samobor, HR
Postovi: 1,553
Ja sam se nešto osnovno s tim bavio, povlačio sam poligone iz baze podataka (sql) i iscrtavao, ali se nisam previše zezao pa sam sve prebacio u lokalni sustav ekrana i to je to bilo, ali vjerujem da se mogu postaviti granice sustava. Obrati pažnju na to da ti je ishodište ekrana gore ljevo i da su koordinatne osi obratne.

Mislim da bi ti sve skupa bilo lakše u pythonu s matplotlib, ali ako treba biti java, nek bude

Ti nisi moja struka, a stalno tu navračaš

Evo ti kod tog mog, nemoj se zgražat, nije mi se dalo optimirat

Code:
import java.awt.Graphics;
import java.awt.*;
import javax.swing.JFrame;
import javax.swing.JPanel;
import java.sql.*;
import org.freehep.graphics2d.VectorGraphics;
import org.freehep.util.export.ExportDialog;

public class Baza extends JPanel {

  public void paint(Graphics g) {
//Povecanje prikaza
double povecanje=2;
boolean brp=true;
//Uredjivanje
Font arialV_B_I = new Font ("Arial",Font.BOLD | Font.ITALIC,18);
Font arialM_N = new Font ("Arial",Font.PLAIN, 14);
//Podaci za spajanje na bazu
String url="jdbc:postgresql://localhost/postgis2";
String kor_ime="postgres";
String sifra="sifra";
Connection baza=null;
Statement stmt=null;
ResultSet rset=null;
VectorGraphics vg = VectorGraphics.create(g);
//Spajanje na bazu
try {
    Class.forName("org.postgresql.Driver");
    baza=DriverManager.getConnection(url,kor_ime,sifra);
    stmt = baza.createStatement();
    rset = stmt.executeQuery("Select gid, contents, asText(the_geom) AS geom from zadatak.zadatak");
    while (rset.next()) {
        //Podaci iz baze
        Integer gid=rset.getInt("gid");
        String brojparcele=rset.getString("contents");
        String geometrija=rset.getString("geom");
        String geom1=geometrija.replace("POLYGON((", "");
        String geom2=geom1.replace("))", "");
        String geom2a=geom2.replace(" ", ",");
        String [] geom3=null;
        geom3=geom2a.split(",");
        int duljina=geom3.length;
        double Y []=new double [duljina/2];
        double X []=new double [duljina/2];
        int i=0;
        double doublegeom [] = new double [geom3.length];
        for (i=0;i<geom3.length;i++){
            doublegeom [i] = Double.parseDouble(geom3[i]);
        }
        int j1=0;
        int k=0;
        for (int j=0;j<doublegeom.length;j=j+2){
            j1=j+1;
            Y[k]=doublegeom[j];
            X[k]=doublegeom[j1];
            k=k+1;
        }
        int br_tocaka=Y.length;
        double Y1 []=new double [Y.length];
        double X1 []=new double [X.length];
        for (int m=0;m<X.length;m++){
            Y1[m]=(Y[m]-5575300)*povecanje; //Lokalno
        }
        for (int n=0;n<X.length;n++){
            X1[n]=(-X[n]+5074250)*povecanje; //Lokalno


        }
        vg.drawPolygon(Y1, X1, br_tocaka);
        if (brp==true) {
        double Ydod=0;
        double Xdod=0;
        for (int o=0;o<Y.length;o++){
            Ydod=Ydod+Y1[o];
            Xdod=Xdod+X1[o];
        }
        double Ysr=(Ydod/br_tocaka)-(povecanje*5);
        double Xsr=(Xdod/br_tocaka)+(povecanje*5);
        vg.drawString(brojparcele,Ysr, Xsr);}
    }
    stmt.close();
    rset.close();
    baza.close();
           } catch (Exception e) {
            vg.setFont(arialV_B_I);
            vg.drawString("Problem: " + e.getMessage(),'-',100);
           ;}
    vg.setFont(arialV_B_I);
    vg.drawString("Vizualizacija podataka iz baze - zadatak 53", '=', 20);
    vg.setFont(arialM_N);
    vg.drawString("Podaci su prikazani u lokalnom koordinatnom sustavu", '=', 40);
    if (povecanje!=1 | povecanje<1) {vg.drawString("Povecanje ="+povecanje+" x",'=',80);}
        }


  public static void main(String[] args) {
    JFrame frame = new JFrame();
    frame.getContentPane().add(new Baza());
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.setSize(800,800);
    frame.setLocationRelativeTo(null);
    frame.setTitle("Vizualizacija podataka iz PostgreSQL baze podataka");
    frame.setVisible(true);
  }
}
FitzTN je offline   Reply With Quote
Staro 17.01.2011., 15:48   #5
svebee
/
 
Datum registracije: Oct 2006
Lokacija: /
Postovi: 2,053
Citiraj:
Autor FitzTN Pregled postova
Mislim da bi ti sve skupa bilo lakše u pythonu s matplotlib, ali ako treba biti java, nek bude
ma zato jer nju od tih svih čudesa najbolje poznajem. mogao bi i nešto drugo, ali rokovi mi i nisu baš bajni

ako imaš nešto jednostavno što funkcionira u Pythonu/nečemu/bilo čemu... i da mogu samo "prepisati" svoje podatke unutra dapače

budem sad ovo pogledao...
svebee je offline   Reply With Quote
Staro 17.01.2011., 16:44   #6
FitzTN
Premium
Moj komp
 
FitzTN's Avatar
 
Datum registracije: Aug 2007
Lokacija: Samobor, HR
Postovi: 1,553
Evo u pythonu, osakatio sam jedan drugi program pa probaj

Code:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# numpy
import numpy as np
# matplotlib plotting module
import matplotlib.pyplot as plt
# matplotlib colormap module
#import matplotlib.cm as cm
# Matplotlib font manager
#import matplotlib.font_manager as font_manager
y,x=np.loadtxt('tocke.csv',unpack=True,skiprows=0,delimiter=';',usecols=(0,1),comments='#')
graf = plt.figure(1)
#ax = graf.subplots_adjust(hspace=0.5)
#ax = graf.add_subplot(211)
ax = graf.add_subplot(111)
naslov=unicode("Naslov", "utf-8")
xoznaka=unicode("Geografska dužina (°)", "utf-8")
yoznaka=unicode("Geografska širina (°)", "utf-8")
ax.set_title(naslov,family='serif', size='xx-large')
ax.set_xlim(14, 17)
ax.set_ylim(44, 46)
plt.xlabel(xoznaka, size='large')
plt.ylabel(yoznaka, size='large')
plt.scatter(x, y, marker='s', cmap=None, norm=None,vmin=None, vmax=None, alpha=None, linewidths=0,verts=None, figure='f')
#plt.colorbar()
graf = plt.figure(1)
imeslike="proba"
#plt.savefig(''+imeslike+'.png', dpi=100)
plt.show()
Ovo je ulazna csv datoteka:
45.79880556;15.95253333
45.811575;15.97999444
45.79605278;15.95978333
45.80117222;15.94436944
45.80418889;15.94404167
45.79942778;15.92806667
45.77279444;15.98232778
45.82538889;15.93781667
45.81059722;15.89199167
45.81554444;15.97460556
45.81335833;15.96428333
45.80950278;15.98833889
45.81265556;15.97189722
45.80843889;16.01774444
45.82552222;15.97701944
45.81465278;15.97399444
45.77222778;15.98186667
45.8059;16.02977778
45.80943611;15.96471667


A ovo je izlazna slika
FitzTN je offline   Reply With Quote
Staro 20.01.2011., 00:04   #7
svebee
/
 
Datum registracije: Oct 2006
Lokacija: /
Postovi: 2,053
Ja imam .txt fajl (8MB) sa mrežom - bilo bi dobro kad bi program bio .exe pa samo u njegov folder popikam svoje "resource" fajlove (mrežu i sam algoritam) i samo pokrenem.

Znači imam .exe fajl/nešto što pokrenem , u njegov folder strpam "mreza.txt" i "algoritam.txt" čiji je sastav ovakav

45.815189,15.933249-45.815189,15.933249
45.815189,15.933249-45.813824,15.928523
45.815189,15.933249-45.812246,15.920229
45.815189,15.933249-45.811674,15.917397
45.815189,15.933249-45.813024,15.905263
45.815189,15.933249-45.811543,15.905375
...

Kad pokrenem program on povuče mrežu i nacrta je (sive tanke linije) iz datoteke mreza.txt. Nakon toga počinje crtati algoritam iz datoteke algoritam.txt - znači ista stvar kao i mreža ide red po red i crta linije - ovaj puta crvenom debljom bojom samo (da se vidi razlika). Ako naiđe na liniju koja počinje sa "G" npr. (kao "gotovo") crta ju samo zeleno. Ako počinje sa F crta debelo zeleno. Znači stalno ista stvar - samo druge boje/debljine. Nakon svake linije napravi delaj od 100ms npr. da se vidi kako algoritam "radi".

mreza.txt = sve linije tanke sive
algoritam.txt obicna linija = deblje crvene crte
algoritam.txt linija pocinje sa slovom G = tanke zelene linije
algoritam.txt linija pocinje sa F = debela zelena linija

Nešto tipa ovo (naravno ne 3D i te fičre) - http://www.youtube.com/watch?v=jjpmuZEbtok


Ima li zainteresiranih? Plaćam
svebee je offline   Reply With Quote
Staro 21.01.2011., 00:36   #8
mc_fish
the luda ribetna
 
mc_fish's Avatar
 
Datum registracije: Aug 2004
Lokacija: Riblja mjesta u zagrebu:D
Postovi: 3,947
kolko?

platforma? python? java? nekaj mobilnog
do kad?

dodatna funkcionalnost?
edit: output?

mora li pratit strukturu citanja predefiniranu?
__________________
blup

mc_fish je offline   Reply With Quote
Staro 21.01.2011., 20:57   #9
Bubba
E Pluribus UNIX
Moj komp
 
Bubba's Avatar
 
Datum registracije: Oct 2002
Lokacija: M82
Postovi: 6,544
Citiraj:
Autor svebee Pregled postova
Ima li zainteresiranih? Plaćam
Moram priznati da te nisam tocno skuzio sto hoces jer sam samo bacio oko na brzinu, ali ako ti treba algoritam kako spojiti dvije koordinate linijom (apstrakciju prijenosa GPS koordinate na "papir" rijesi samostalno), prouci Bresenham's line algorithm.
__________________
Programer
Rok od dva mjeseca u stvari znači četiri, ali nikako ispod šest.
Bubba je offline   Reply With Quote
Staro 22.01.2011., 01:17   #10
svebee
/
 
Datum registracije: Oct 2006
Lokacija: /
Postovi: 2,053
Citiraj:
Autor Bubba Pregled postova
(apstrakciju prijenosa GPS koordinate na "papir" rijesi samostalno)
stvar je vremena

Citiraj:
Autor Bubba Pregled postova
siguran sam da bih nešto iskombinirao, kako sam uspio srediti i Dijsktru (čak sa dinamičkim izračunom bridova ) vjerujem da bi se i ovdje nešto iskombiniralo. međutim, isto kao i gore...nemam vremena se trenutno time baviti
svebee je offline   Reply With Quote
Oglasni prostor
Oglas
 
Oglas
Staro 22.01.2011., 11:33   #11
Bubba
E Pluribus UNIX
Moj komp
 
Bubba's Avatar
 
Datum registracije: Oct 2002
Lokacija: M82
Postovi: 6,544
Citiraj:
Autor svebee Pregled postova
stvar je vremena

siguran sam da bih nešto iskombinirao, kako sam uspio srediti i Dijsktru (čak sa dinamičkim izračunom bridova ) vjerujem da bi se i ovdje nešto iskombiniralo. međutim, isto kao i gore...nemam vremena se trenutno time baviti
E jebi ga, 'oce ti to tako u zivotu...

BTW, mozda ce ti ovo pomoci, samo sto je vezano direktno za Google Maps API (to sam osobno koristio, i iako te jos uvijek ne shvatjam sto ti tocno treba, meni je za GPS pracenje i crtanje povijesti ruta posluzilo savrseno elegantno).

http://www.svennerberg.com/2008/10/p...n-google-maps/
http://econym.org.uk/gmap/

HTH.
__________________
Programer
Rok od dva mjeseca u stvari znači četiri, ali nikako ispod šest.
Bubba je offline   Reply With Quote
Staro 22.01.2011., 13:10   #12
FitzTN
Premium
Moj komp
 
FitzTN's Avatar
 
Datum registracije: Aug 2007
Lokacija: Samobor, HR
Postovi: 1,553
Njemu treba da mu prvo iscrta sve linije u jednoj boji (recimo sve ulice). To nije problem, mala modifikacija mog koda gore gdje umjesto plt.scatter ide plt.plot(x,y) gdje su x,y matrice koordinata početnih i završnih točaka linije.

Nakon toga mu treba drugi dio program, koji će preko tih linija iscrtavati druge, redom, s malom pauzom i tako da mjenjaju boje. Algoritam koji traži put od neke točke/čvora, preko tih "ulica" iz prvog dijela do druge točke.

Vjerujem da nije neki problem sve skupa iako mu je struktura samih ulaznih podataka malo zeznuta Ne kužim zašto 2 vrste delimitera, zašto je boja na početku i tako hehe :-)

Samo je pitanje vremena
FitzTN je offline   Reply With Quote
Staro 22.01.2011., 15:08   #13
svebee
/
 
Datum registracije: Oct 2006
Lokacija: /
Postovi: 2,053
Citiraj:
Autor FitzTN Pregled postova
Vjerujem da nije neki problem sve skupa iako mu je struktura samih ulaznih podataka malo zeznuta Ne kužim zašto 2 vrste delimitera, zašto je boja na početku i tako hehe :-)
što se tiče toga mogu ja to promijeniti, meni ne igra neku ulogu - kako tom programu za crtanje najbolje paše mogu poriktati ulazne parametre/podatke.

inače ovo da - to mi treba prvo obična mreža, pa linije u bojama preko te iste mreže (vidi video iznad)
svebee je offline   Reply With Quote
Staro 26.01.2011., 23:33   #14
svebee
/
 
Datum registracije: Oct 2006
Lokacija: /
Postovi: 2,053
bump, zar nitko ne zna ovo sklepati?
svebee je offline   Reply With Quote
Staro 28.01.2011., 14:03   #15
mc_fish
the luda ribetna
 
mc_fish's Avatar
 
Datum registracije: Aug 2004
Lokacija: Riblja mjesta u zagrebu:D
Postovi: 3,947
majstore mogu ti ja u cem god oces, samo sam tolko bez vremena da ak se mos stript jos tj-2 inace 4 money i prek noci
__________________
blup

mc_fish je offline   Reply With Quote
Oglasni prostor
Oglas
 
Oglas
Odgovori



Pravila postanja
Vi ne možete otvarati nove teme
Vi ne možete pisati odgovore
Vi ne možete uploadati priloge
Vi ne možete uređivati svoje poruke

BB code je Uključeno
Smajlići su Uključeno
[IMG] kod je Uključeno
HTML je Isključeno

Idi na