... | @@ -102,15 +102,15 @@ Scanner askServiceInfo = new Scanner(System.in); //warning coming from non-close |
... | @@ -102,15 +102,15 @@ Scanner askServiceInfo = new Scanner(System.in); //warning coming from non-close |
|
|
|
|
|
|
|
|
|
|
|
|
|
## Step 1: Conceptualisation and Creating a Main, Executable Class
|
|
## Conceptualisation and Creating a Main Executable Class
|
|
|
|
|
|
### 1.1: Concept
|
|
### Concept
|
|
|
|
|
|
At the outset we began gathering ideas and drawing up concepts for our approach. We have visualised our concept below:
|
|
At the outset we began gathering ideas and drawing up concepts for our approach. We have visualised our concept below:
|
|
|
|
|
|

|
|

|
|
|
|
|
|
### 1.2: Create Main, Executable Class
|
|
### The Main Executable Class
|
|
|
|
|
|
Although this class could not be completed until we had created all other classes, we will begin with this class since it provides a neat summary of how all components for our project come together.
|
|
Although this class could not be completed until we had created all other classes, we will begin with this class since it provides a neat summary of how all components for our project come together.
|
|
|
|
|
... | @@ -120,17 +120,16 @@ As stated above, we aimed to make the whole programme run smoothly without the u |
... | @@ -120,17 +120,16 @@ As stated above, we aimed to make the whole programme run smoothly without the u |
|
|
|
|
|
```java
|
|
```java
|
|
|
|
|
|
package Test2;
|
|
package eot_Sahinovic_Woehs_Zorenboehmer;
|
|
|
|
|
|
public class execute_programme {
|
|
public class GoogleEarthTweetMapper {
|
|
|
|
|
|
public static String directory = "C:\\Users\\Christina\\Documents\\EoT"; //ADAPT NAME
|
|
public static String directory = "C:\\Users\\Public\\Documents";
|
|
// public static String directory = setDirectories.directory;
|
|
public static String google_earth_filepath = "C:\\Program Files\\Google\\Google Earth Pro\\client\\googleearth.exe";
|
|
public static String google_earth_filepath = "C:\\Program Files\\Google\\Google Earth Pro\\client\\googleearth.exe"; // ADAPT to where Google Earth is
|
|
|
|
|
|
|
|
public static String wms_url ="http://maps.heigit.org/osm-wms/service?service=WMS&request=GetCapabilities&version=1.1.0";
|
|
public static String wms_url ="http://maps.heigit.org/osm-wms/service?service=WMS&request=GetCapabilities&version=1.1.0";
|
|
public static String wms_png = directory + "\\boston.png";
|
|
public static String wms_png = directory + "\\boston.png";
|
|
public static String wms_kml = directory + "\\wms_kml_structure.kml";
|
|
public static String wms_kml = directory + "\\boston.kml";
|
|
|
|
|
|
public static String twitter_url = "http://www.berndresch.com/work/twitter.csv";
|
|
public static String twitter_url = "http://www.berndresch.com/work/twitter.csv";
|
|
public static String twitter_csv = directory + "\\tweets.csv";
|
|
public static String twitter_csv = directory + "\\tweets.csv";
|
... | @@ -140,30 +139,32 @@ public class execute_programme { |
... | @@ -140,30 +139,32 @@ public class execute_programme { |
|
|
|
|
|
public static void main(String[] args) {
|
|
public static void main(String[] args) {
|
|
|
|
|
|
// setDirectories.askUser();
|
|
// Welcome, inform user of local directory and ask to proceed
|
|
|
|
userInput1.askUser();
|
|
|
|
|
|
// run method getMap from class bostonWMS_GetMap
|
|
// getMap and store locally
|
|
wms_GetMap.getMap();
|
|
wms_GetMap.getMap();
|
|
System.out.println("Step 1 completed.\n");
|
|
System.out.println(" --- Step 1 completed. ---\n");
|
|
|
|
|
|
// turn wms into kml
|
|
// Turn WMS into KML
|
|
wms_ImageToKML.wmsTOkml();
|
|
wms_ImageToKML.wmsTOkml();
|
|
System.out.println("Step 2 completed.\n");
|
|
System.out.println(" --- Step 2 completed. --- \n");
|
|
|
|
|
|
// dowload tweets CSV from web
|
|
// Download tweets CSV from web
|
|
tweets_download.downloadCSV();
|
|
tweets_download.downloadCSV();
|
|
System.out.println("Step 3 completed.\n");
|
|
System.out.println(" --- Step 3 completed. --- \n");
|
|
|
|
|
|
// access local CSV tweets file and turn into kml
|
|
// Access local CSV tweets file and turn into KML
|
|
tweets_CSVtoKML.CSVtoKML();
|
|
tweets_CSVtoKML.CSVtoKML();
|
|
System.out.println("Step 4 completed.\n");
|
|
System.out.println(" --- Step 4 completed. --- \n");
|
|
|
|
|
|
// ask if user wants to continue
|
|
// Ask to proceed with launch
|
|
userInput2.userInput2();
|
|
userInput2.askUser2();
|
|
System.out.println("Continued.\n");
|
|
System.out.println("Continued.\n");
|
|
|
|
|
|
|
|
// Launch
|
|
googleEarth_launch.launchGoogleEarth();
|
|
googleEarth_launch.launchGoogleEarth();
|
|
System.out.println("Step 5 completed.\n");
|
|
System.out.println(" --- Step 5 completed. --- \n");
|
|
|
|
|
|
}
|
|
}
|
|
}
|
|
}
|
... | @@ -171,6 +172,66 @@ public class execute_programme { |
... | @@ -171,6 +172,66 @@ public class execute_programme { |
|
|
|
|
|
</details>
|
|
</details>
|
|
|
|
|
|
|
|
## Step 1: Inform User, Ask for Permission to Store Files Locally
|
|
|
|
|
|
|
|
In this first step we ask the user to give us the "thumbs up" for downloading the required files onto their PC. We specify the location, which is set to "C:/Users/Public/Documents", which is a default file path that can apply to any PC.
|
|
|
|
|
|
|
|
<details><summary> See the Code for the "userInput1.java class here</summary>
|
|
|
|
|
|
|
|
```java
|
|
|
|
package eot_Sahinovic_Woehs_Zorenboehmer;
|
|
|
|
|
|
|
|
import java.util.Scanner;
|
|
|
|
|
|
|
|
public class userInput1 {
|
|
|
|
|
|
|
|
String directory = GoogleEarthTweetMapper.directory;
|
|
|
|
|
|
|
|
static void askUser() {
|
|
|
|
|
|
|
|
Scanner askUser = new Scanner(System.in); // warning coming from non-closed scanner. Note: if we close it, subsequent scanners fail to work.
|
|
|
|
String answer;
|
|
|
|
|
|
|
|
System.out.println("Hello! Welcome to this Google Earth Tweet and WMS Mapper!\n\n"
|
|
|
|
+ "This programme will:\n"
|
|
|
|
+ "1: download an image of Boston from a WMS\n"
|
|
|
|
+ "2: convert it into a KML structure\n"
|
|
|
|
+ "3: download a tweets.csv file from the web\n"
|
|
|
|
+ "4: convert it into a KML structure\n"
|
|
|
|
+ "5: launch both kml files in Google Earth\n\n"
|
|
|
|
+ "The downloaded files will be stored at C:\\Users\\Public\\Documents\n"
|
|
|
|
+ "If this is fine, please enter Y below and hit enter to continue! If not, we will stop the programme and you can manually change the directory at the very top of this class's code.");
|
|
|
|
answer = askUser.next();
|
|
|
|
// askUser.close();
|
|
|
|
|
|
|
|
if(answer.contains("Y") || answer.contains("y") || answer.contains("yes") || answer.contains("Yes")) {
|
|
|
|
System.out.println("Great! Lets get started!\n");
|
|
|
|
} else {
|
|
|
|
System.out.println("We've stopped the programme. Please adjust the code and start again!");
|
|
|
|
System.exit(0);
|
|
|
|
}
|
|
|
|
|
|
|
|
} // askUser()
|
|
|
|
} // class
|
|
|
|
```
|
|
|
|
|
|
|
|
<details><summary> See the console output </summary>
|
|
|
|
```java
|
|
|
|
Hello! Welcome to this Google Earth Tweet and WMS Mapper!
|
|
|
|
|
|
|
|
This programme will:
|
|
|
|
1: download an image of Boston from a WMS
|
|
|
|
2: convert it into a KML structure
|
|
|
|
3: download a tweets.csv file from the web
|
|
|
|
4: convert it into a KML structure
|
|
|
|
5: launch both kml files in Google Earth
|
|
|
|
|
|
|
|
The downloaded files will be stored at C:\Users\Public\Documents
|
|
|
|
If this is fine, please enter Y below and hit enter to continue! If not, we will stop the programme and you can manually change the directory at the very top of this class's code.
|
|
|
|
y
|
|
|
|
Great! Lets get started!
|
|
|
|
```
|
|
|
|
</details>
|
|
|
|
|
|
## Step 2: Web Map Service
|
|
## Step 2: Web Map Service
|
|
|
|
|
... | @@ -187,8 +248,7 @@ First, we created a [non-executable class "wms_GetMap"](https://git.sbg.ac.at/s1 |
... | @@ -187,8 +248,7 @@ First, we created a [non-executable class "wms_GetMap"](https://git.sbg.ac.at/s1 |
|
<details><summary> See the Code for the "wms_GetMap.java" class here</summary>
|
|
<details><summary> See the Code for the "wms_GetMap.java" class here</summary>
|
|
|
|
|
|
```java
|
|
```java
|
|
|
|
package eot_Sahinovic_Woehs_Zorenboehmer;
|
|
package Test2;
|
|
|
|
|
|
|
|
import java.awt.image.BufferedImage;
|
|
import java.awt.image.BufferedImage;
|
|
import java.io.File;
|
|
import java.io.File;
|
... | @@ -209,22 +269,19 @@ public class wms_GetMap { |
... | @@ -209,22 +269,19 @@ public class wms_GetMap { |
|
|
|
|
|
static void getMap() {
|
|
static void getMap() {
|
|
|
|
|
|
String wms_url = execute_programme.wms_url;
|
|
String wms_url = GoogleEarthTweetMapper.wms_url;
|
|
String directory = execute_programme.directory;
|
|
String wms_png = GoogleEarthTweetMapper.wms_png;
|
|
String wms_png = execute_programme.wms_png;
|
|
|
|
|
|
|
|
System.out.println("Accessing WMS and downloading .png of Boston to local directory at: " + wms_png + "... ");
|
|
|
|
|
|
|
|
// Constructing a WebMapServer object:
|
|
// Check if WMS URL is valid
|
|
URL url = null;
|
|
URL url = null;
|
|
try {
|
|
try {
|
|
System.out.println("Testing Heigit's wms service URL... ");
|
|
System.out.print("Testing Heigit's wms service URL... ");
|
|
url = new URL(wms_url);
|
|
url = new URL(wms_url);
|
|
System.out.println("URL vaid.");
|
|
|
|
} catch (MalformedURLException e) {
|
|
} catch (MalformedURLException e) {
|
|
System.out.println("Error related to URL.");
|
|
System.out.println("Error related to URL.");
|
|
}
|
|
}
|
|
|
|
|
|
|
|
// Construct WMS object
|
|
WebMapServer wms = null;
|
|
WebMapServer wms = null;
|
|
try {
|
|
try {
|
|
wms = new WebMapServer(url);
|
|
wms = new WebMapServer(url);
|
... | @@ -235,17 +292,17 @@ public class wms_GetMap { |
... | @@ -235,17 +292,17 @@ public class wms_GetMap { |
|
}
|
|
}
|
|
System.out.println("No errors in communicating with the server.");
|
|
System.out.println("No errors in communicating with the server.");
|
|
|
|
|
|
// You can retrieve a WMSCapabilities directly from your WebMapService. This capabilities bean is split into three sections: Service, Request, and Layer.
|
|
// Access WMSCapabilities directly from the WMS. This capabilities bean is split into three sections: Service, Request, and Layer.
|
|
WMSCapabilities capabilities = wms.getCapabilities();
|
|
WMSCapabilities capabilities = wms.getCapabilities();
|
|
|
|
|
|
// Get information on the service
|
|
// Get information on the service
|
|
String serverName = capabilities.getService().getName();
|
|
String serverName = capabilities.getService().getName();
|
|
String serverTitle = capabilities.getService().getTitle();
|
|
String serverTitle = capabilities.getService().getTitle();
|
|
|
|
|
|
// Get Map Request: ask the client to create a GetMapRequest object. MAKE SURE TO IMPORT THE CORRECT GETMAPREQUEST: import org.geotools.ows.wms.request.GetMapRequest;
|
|
// Get Map Request: ask client to create a GetMapRequest object
|
|
GetMapRequest request = wms.createGetMapRequest();
|
|
GetMapRequest request = wms.createGetMapRequest();
|
|
|
|
|
|
// Configure the request object:
|
|
// Configure the request object
|
|
request.addLayer("osm_auto:all", "default");
|
|
request.addLayer("osm_auto:all", "default");
|
|
request.setFormat("image/png");
|
|
request.setFormat("image/png");
|
|
request.setDimensions("1000", "1000");
|
|
request.setDimensions("1000", "1000");
|
... | @@ -254,39 +311,37 @@ public class wms_GetMap { |
... | @@ -254,39 +311,37 @@ public class wms_GetMap { |
|
request.setVersion("1.1.1");
|
|
request.setVersion("1.1.1");
|
|
request.setBBox("-71.13,42.32,-71.03,42.42");
|
|
request.setBBox("-71.13,42.32,-71.03,42.42");
|
|
|
|
|
|
Scanner askServiceInfo = new Scanner(System.in); //warning coming from non-closed scanner
|
|
// user interaction: offer additional information
|
|
|
|
Scanner askServiceInfo = new Scanner(System.in); //warning coming from non-closed scanner. Note: if scanner is closed subsequent scanners fail to work.
|
|
String answer;
|
|
String answer;
|
|
System.out.println("Would you like additional information on the WMS service while the programme runs? Type Y for yes or anything else for no and hit enter.");
|
|
System.out.println("\nWould you like additional information on the WMS service while the programme runs? Type Y for yes or anything else for no and hit enter.");
|
|
answer = askServiceInfo.next();
|
|
answer = askServiceInfo.next();
|
|
// askServiceInfo.close();
|
|
// askServiceInfo.close();
|
|
|
|
|
|
if(answer.contains("Y") || answer.contains("y") || answer.contains("yes") || answer.contains("Yes")) {
|
|
if(answer.contains("Y") || answer.contains("y") || answer.contains("yes") || answer.contains("Yes")) {
|
|
System.out.println("The WMS capabilities are being retreived from a server called: " + serverName +"\nAnd the server's title is :" + serverTitle +".\n\n" +
|
|
System.out.println("\tThe WMS capabilities are being retreived from a server called: " + serverName +"\n\tAnd the server's title is: " + serverTitle +"\n\t" +
|
|
"The requested image will be stored as a .png with dimensions of 1000 x 1000 pixels." +
|
|
"The requested image will be stored as a .png with dimensions of 1000 x 1000 pixels.\n\t" +
|
|
"The coordinate reference system is set to ESPG:4326");
|
|
"The coordinate reference system is set to ESPG:4326.");
|
|
|
|
System.out.println("\tRequested GetMap URL: " + request.getFinalURL());
|
|
|
|
|
|
} else {
|
|
} else {
|
|
System.out.println("Alright.");
|
|
System.out.println("Alright.");
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
System.out.println("\n\nRequested URL: " + request.getFinalURL());
|
|
|
|
|
|
|
|
try {
|
|
try {
|
|
GetMapResponse response = (GetMapResponse) wms.issueRequest(request);
|
|
GetMapResponse response = (GetMapResponse) wms.issueRequest(request);
|
|
BufferedImage image = ImageIO.read(response.getInputStream());
|
|
BufferedImage image = ImageIO.read(response.getInputStream());
|
|
ImageIO.write(image, "png", new File(directory + "\\boston.png"));
|
|
ImageIO.write(image, "png", new File(wms_png));
|
|
} catch (IOException e) {
|
|
} catch (IOException e) {
|
|
System.out.println("There was an error writing the image.");
|
|
System.out.println("\nThere was an error writing the image.");
|
|
} catch (ServiceException e) {
|
|
} catch (ServiceException e) {
|
|
e.printStackTrace();
|
|
e.printStackTrace();
|
|
}
|
|
}
|
|
System.out.println("Image was successfully saved at: " + directory + "\\boston.png");
|
|
System.out.println("\nImage was successfully saved at: " + wms_png);
|
|
}
|
|
|
|
|
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
```
|
|
```
|
|
|
|
|
|
</details>
|
|
</details>
|
... | @@ -295,21 +350,19 @@ public class wms_GetMap { |
... | @@ -295,21 +350,19 @@ public class wms_GetMap { |
|
<details><summary>See Console Output</summary>
|
|
<details><summary>See Console Output</summary>
|
|
|
|
|
|
```
|
|
```
|
|
Accessing WMS and downloading .png of Boston to local directory at: C:\Users\Christina\Documents\EoT\boston.png...
|
|
Testing Heigit's wms service URL... No errors in communicating with the server.
|
|
Testing Heigit's wms service URL...
|
|
|
|
URL vaid.
|
|
|
|
No errors in communicating with the server.
|
|
|
|
Would you like additional information on the WMS service while the programme runs? Type Y for yes or anything else for no and hit enter.
|
|
Would you like additional information on the WMS service while the programme runs? Type Y for yes or anything else for no and hit enter.
|
|
y
|
|
y
|
|
The WMS capabilities are being retreived from a server called: OGC:WMS
|
|
The WMS capabilities are being retreived from a server called: OGC:WMS
|
|
And the server's title is :OSM-WMS Uni Heidelberg.
|
|
And the server's title is :OSM-WMS Uni Heidelberg.
|
|
|
|
The requested image will be stored as a .png with dimensions of 1000 x 1000 pixels.
|
|
|
|
The coordinate reference system is set to ESPG:4326
|
|
|
|
Requested GetMap URL: http://maps.heigit.org/osm-wms/service?REQUEST=GetMap&FORMAT=image%2Fpng&SRS=EPSG:4326&BBOX=-71.13,42.32,-71.03,42.42&VERSION=1.1.1&STYLES=default&SERVICE=WMS&WIDTH=1000&HEIGHT=1000&TRANSPARENT=TRUE&LAYERS=osm_auto%3Aall
|
|
|
|
|
|
The requested image will be stored as a .png with dimensions of 1000 x 1000 pixels.The coordinate reference system is set to ESPG:4326
|
|
Image was successfully saved at: C:\Users\Public\Documents\boston.png
|
|
|
|
--- Step 1 completed. ---
|
|
|
|
|
|
Requested URL: http://maps.heigit.org/osm-wms/service?REQUEST=GetMap&FORMAT=image%2Fpng&SRS=EPSG:4326&BBOX=-71.13,42.32,-71.03,42.42&VERSION=1.1.1&STYLES=default&SERVICE=WMS&WIDTH=1000&HEIGHT=1000&TRANSPARENT=TRUE&LAYERS=osm_auto%3Aall
|
|
|
|
Image was successfully saved at: C:\Users\Christina\Documents\EoT\boston.png
|
|
|
|
Step 1 completed.
|
|
|
|
|
|
|
|
```
|
|
```
|
|
</details>
|
|
</details>
|
... | | ... | |