PostGIS mi serve ma solo nella terza esercitazione, per ora mi basta solo PostgreSQL senza la relativa estensione.
Devo salvare delle coordinate in un database. Scrivere delle semplici query.
Sapresti spiegarmi che cos'è un
sistema GIS in parole semplici? A me sembra di aver capito che PostGIS sia un plugin per PostgreSQL che aggiunge dei metodi che aiuta il programmatore ad eseguire delle operazioni matematiche su dati spaziali (latitudine e longitudine) contenuti in PostgreSQL. Sulla pagina che ho postato si parla di QGIS ma online trovo anche ArcGIS ed ArcGIS Pro e non capisco bene cosa centrino con PostGIS. E' possibile che QGIS ed ArcGIS Pro siano dei software simili ad AutoCAD per interpretare database PostgreSQL con estensione PostGIS ed eseguire su questi ulteriori elaborazioni grafiche/matematiche non realizzabili con i semplici metodi di PostGIS?
Docker nella prima esercitazione l'ho usato per testare i .war in locale su Tomcat. E' un programma ostico... molto ostico... almeno per me...
Questo è quello che dovrei fare in Java:
static {
try{
Class.forName("foo.bar.Drv");
}catch (ClassNotFoundException e){
throw new
ExceptionInInitializerError(e);
//o invocare System.exit()
}
}
private Connection getConnection(String url)
throws SQLException {
return DriverManager.getConnection(url,"myLogin","myPassword");
}
public void doQuery(Connection c, String p1,? )
throws SQLException{
PreparedStatement ps = null;
try {
String query="SELECT * FROM table WHERE value=1";
if(p1!=null){
query=query+" AND P1 = ?";
ps = c.prepareStatement(query); ps.setString(1,p1);
} else
ps = c.prepareStatement(query);
readAndProcessData( ps.executeQuery() );
} finally {
try {if (ps!=null) ps.close();}
catch (Exception e) { ? }
}
}
public void readAndProcessData(ResultSet rs){
try {
while(rs.next()) {
System.out.println(
rs.getString("Field1")+ " " +
rs.getInt("Field2")+ " " +
rs.getDate("Field3")+"\n"
);
} finally {
try { rs.close(); }
catch (Exception e) { ...}
}
}
private int insertData(String value1,?)
throws SQLException{
String q="INSERT INTO myTable"+
+" (field1, field2, ? ) "+
+" VALUES (?,?)";
PreparedStatement ps=conn.prepareStatement(q);
try {
ps.setString(1,value1);
?
return ps.executeUpdate();
} finally {
try { if (ps!=null) ps.close();}
catch (Exception e) { ... }
}
}
private int updateData(String value1,?)
throws SQLException{
String q="UPDATE myTable SET"+
+" field1 = ?, ? "+
+" WHERE ?";
PreparedStatement ps=conn.prepareStatement(q);
try {
ps.setString(1,value1);
?
return ps.executeUpdate();
} finally {
try { if (ps!=null) ps.close();}
catch (Exception e) { ... }
}
}
private int deleteData(String value1,?)
throws SQLException{
String q=?DELETE FROM myTable "+
+" WHERE field1 = ? ? ";
PreparedStatement ps=conn.prepareStatement(q);
try {
ps.setString(1,value1);
?
return ps.executeUpdate();
} finally {
try { if (ps!=null) ps.close();}
catch (Exception e) { ... }
}
}
public class Contact{
private String name;
private long id;
//getter e setter
}
public interface ContactDAO{
public List<Contact> findAll();
public List<Contact> findByName(String name);
public Contact findById(long id);
public void insert(Contact c);
public void delete(Contact c);
public void update(Contact c);
}
public class MySQLContactDAO implements ContactDAO{
public List<Contact> findAll() {
Connection c=null; Statement s=null; ResultSet rs=null;
try{
c=getConnection(?);
s = c.createStatement();
rs = s.executeQuery("SELECT * FROM Contatti");
List<Contact> l=new ArrayList<Contact>();
/* process rs and populate l */?; return l;
} catch (Exception e) { throw new RuntimeException(e);
} finally {
try {if(rs!=null) rs.close();} catch(Exception e) {?}
try {if(s!=null) s.close();} catch(Exception e) {?}
try {if(c!=null) c.close();} catch(Exception e) {?}
}
} /* other methods ... */
}
Connection c = null;
Statement s=null;
try {
c=DriverManager.getConnection(url, user, passwd);
c.setAutoCommit(false);
try {
s = c.createStatement();
s.executeUpdate(...);
s.executeUpdate(...);
c.commit();
} catch (Exception e) {
c.rollback();
throw e;
}
} finally {
try {if(s!=null) s.close();} catch (Exception e) {...}
try {if(c!=null) c.close();} catch (Exception e) {...}
}
Statement s = conn.createStatement();
s.executeUpdate("INSERT INTO authors " +
"(first, last) VALUES ('George', 'Orwell')",
Statement.RETURN_GENERATED_KEYS);
ResultSet rs = s.getGeneratedKeys();
if ( rs.next() ) {
int key = rs.getInt(1);
}
Ti è famigliare?