import java.io.*;
public class pro {
int datanumber;
String[] data=new String[50000];
String[] code=new String[50000];
double[] lon=new double[50000];
double[] lat=new double[50000];
String[] city=new String[50000];
int[] num=new int[60000];
double[][] lonx=new double[5000][501];
double[][] latx=new double[5000][501];
int[] delta=new int[6000];
String[] code_city=new String[5000];
public static void main(String[] args) {
pro t=new pro();
}
pro(){
readx("map.csv");
int s;
for(s=1;s<datanumber+1;s++){
String[] x=data[s].split(",");
lon[s]=Double.parseDouble(x[3]);
lat[s]=Double.parseDouble(x[4]);
city[s]="";
if(x.length>5)city[s]=x[5];
code[s]=x[1];
num[s]=Integer.parseInt(x[2]);
}
int sx,dicnumber;
String[] dic=new String[5000];
dicnumber=0;
for(s=1;s<datanumber+1;s++){
int h=0;
for(sx=1;sx<dicnumber+1;sx++){
if(code[s].equals(dic[sx]))h=100;
}
if(h<60)dicnumber=dicnumber+1;
if(h<60)dic[dicnumber]=code[s];
if(h<60)code_city[dicnumber]=city[s];
}
for(s=1;s<datanumber+1;s++){
int sxs=0;
for(sx=1;sx<dicnumber+1;sx++){
if(code[s].equals(dic[sx]))sxs=sx;
}
int n=num[s];
delta[sxs]=n;
lonx[sxs][n]=lon[s];
latx[sxs][n]=lat[s];
}
System.out.println(dicnumber);
graph sub=new graph();
sub.lonx=lonx;
sub.latx=latx;
sub.dicnumber=dicnumber;
sub.delta=delta;
sub.code_city=code_city;
sub.makedata("ren3.jpg");
}
void readx(String file){
String str;
BufferedReader br;
int s;
s=0;
try {
br = new BufferedReader(new InputStreamReader(new FileInputStream(file),"SJIS"));
while((str = br.readLine()) != null) {
String[] k=str.split(",");
if(k[0].equals("p41"))s=s+1;
if(k[0].equals("p41"))data[s]=str;
}
br.close();
} catch (IOException e) {System.out.println(e);}
datanumber=s;
}
}
package map;
import java.awt.Polygon;
import java.awt.*;
import java.awt.Color;
import java.awt.image.*;
import java.awt.image.BufferedImage;
import java.io.*;
import javax.imageio.ImageIO;
import java.awt.Polygon;
import java.util.HashMap;
class graph{
int number_adm;
int h=700;
int w=700;
String maxg;
double z;
int dicnumber;
String[] dic=new String[20000];
double[][] lonx=new double[5000][501];
double[][] latx=new double[5000][501];
int[] delta=new int[6000];
String[] code_city=new String[5000];
void makedata(String file){
int w1,h1,mx,nx;
String c1="41202";
w1=700;
h1=700;
BufferedImage off = new BufferedImage(w1, h1, BufferedImage.TYPE_INT_BGR);
Graphics offsc = off.getGraphics();
offsc.setColor(Color.WHITE);
offsc.fillRect(0,0,700,700);
double maxy,maxx,minx,miny;
maxy=0;
maxx=0;
int sx,s;
for(s=1;s<dicnumber+1;s++){
for(sx=1;sx<delta[s]+1;sx++){
if(lonx[s][sx]>maxy)maxy=lonx[s][sx];
if(latx[s][sx]>maxx)maxx=latx[s][sx];
}}
minx=999;
miny=999;
for(s=1;s<dicnumber+1;s++){
for(sx=1;sx<delta[s]+1;sx++){
if(lonx[s][sx]<miny)miny=lonx[s][sx];
if(latx[s][sx]<minx)minx=latx[s][sx];
}}
int x1,y1;
offsc.setColor(Color.RED);
for(s=1;s<dicnumber+1;s++){
int[] px=new int[600];
int[] py=new int[600];
for(sx=1;sx<delta[s]+1;sx++){
px[sx-1]=(int)(500*(latx[s][sx]-minx)/(maxx-minx));
py[sx-1]=500-(int)((500*(lonx[s][sx]-miny)/(maxy-miny)));
}
offsc.setColor(Color.RED);
if(code_city[s].equals(c1))offsc.setColor(Color.BLUE);
Polygon po = new Polygon(px,py,delta[s]);
offsc.fillPolygon(po);
}
offsc.dispose();
try {
ImageIO.write(off, "jpeg", new File(file));
} catch (IOException exception) { exception.printStackTrace(); }
}
}
最終更新:2016年04月07日 08:41