1、地图文件格式文档了解文件结构;
2、通过编程读取指定文件组:如rivers的数据读取;
3、通过编程把读取的数据绘制在自编应用程序的界面上;
4、可通过鼠标右键或滚轮对鼠标选定位置进行放大,放大比例可调;
5、读取DBF对地图上的线进行标注,当标注内容为英文有中间有空格或标注为中文字符时,标注需要的每个词/字应保持一定距离(B/A/S级)
6、.鼠标左键点击地图上的线时,对该线进行查询,显示该线所对应的所有属性信息。(B/A/S级)
7、当标注文字相互间发生相互重叠时,将标注文字调整到非重叠且无歧义的位置。(S级)
这是读出来的图片这是放大后的我现在可以读出地图文件的所有点,还有图层的上下左右边界的值,但这些都是double型的数字,例如:图层的左上右下四个边界是 点也都是各种9位数十位数,这要怎么才能画出来?
2、通过编程读取指定文件组:如rivers的数据读取;
3、通过编程把读取的数据绘制在自编应用程序的界面上;
4、可通过鼠标右键或滚轮对鼠标选定位置进行放大,放大比例可调;
5、读取DBF对地图上的线进行标注,当标注内容为英文有中间有空格或标注为中文字符时,标注需要的每个词/字应保持一定距离(B/A/S级)
6、.鼠标左键点击地图上的线时,对该线进行查询,显示该线所对应的所有属性信息。(B/A/S级)
7、当标注文字相互间发生相互重叠时,将标注文字调整到非重叠且无歧义的位置。(S级)
这是读出来的图片这是放大后的我现在可以读出地图文件的所有点,还有图层的上下左右边界的值,但这些都是double型的数字,例如:图层的左上右下四个边界是 点也都是各种9位数十位数,这要怎么才能画出来?
解决方案 »
- XWT中使用CSS
- 求解通过jacob调用Apabi问题
- 不明白的方法!??
- 写了一个画图形的程序,但画不出图形,请大家看看哪里错了?
- Swing,如何在JLabel上实现滚动字符???
- 求助:字符串中出现次数最多的单词及其出现次数
- 请多指教get connection from datasource fail : Cannot create JDBC driver of class '' for connect URL 'null'
- java 调用 ping 功能!
- *********class发布,请帮忙。***************(在线等待)
- 大神们,101-200之间的素数哪儿错了
- 请问关于arraylist的
- 为什么不遍历就能够输出char类型的数组?
public class test2_1 extends JFrame {
public static void main(String argv[]) {
ArrayList<Double> x = new ArrayList<Double>();
ArrayList<Double> y = new ArrayList<Double>(); test2_1 test = new test2_1();
test.readlay("D:/golang/mygo_project/src/test2/rivers.lay");
test.readidx("D:/golang/mygo_project/src/test2/rivers.idx");
test.readpts("D:/golang/mygo_project/src/test2/rivers.pts");
test.readcor("D:/golang/mygo_project/src/test2/rivers.cor", x, y);
test.readdbf("D:/golang/mygo_project/src/test2/rivers.dbf"); double[] x1 = new double[x.size()];
double[] y1 = new double[y.size()];
for (int i = 0; i < x.size(); i++) {
x1[i] = x.get(i);
}
for (int i = 0; i < x.size(); i++) {
y1[i] = y.get(i);
}
// System.out.println(x1[2]+","+y1[2]);
test.createWin();
}
public void createWin() {
// 设置标题
this.setTitle("地图读取");
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
// 设置大小可更改
this.setResizable(true);
// 设置大小
this.setSize(300, 100);
// 显示窗口
this.setVisible(true);
}public void paint(Graphics g, Double[] x1, Double[] y1) {
// public void paint(Graphics g) {
Graphics2D g2d = (Graphics2D) g;
g2d.translate(getWidth() / 2, getHeight() / 2);
g2d.setColor(Color.blue);
for (int i = 0; i < 377; i++) {
System.out.println(x1[i] + "," + y1[i]);
Line2D line = new Line2D.Double(x1[i] , y1[i] , x1[i + 1] , y1[i + 1] );// 创建line对象
g2d.draw(line);
}
}我用这个方法为什么画出来的东西都不会显示
public void paint(Graphics g) {
Graphics2D g2d = (Graphics2D) g;
g2d.translate(getWidth() / 2, getHeight() / 2);
g2d.setColor(Color.blue);
g2d.drawLine(200, 0, 200, 0);
g2d.drawLine(0, -200, 0, 200);
g2d.fillRect(0, 0, 100, 100);
}
改成这样就会有东西显示在窗体里了?
javax.swing.SwingUtilities.invokeLater(new Runnable() {
public void run() {
Graphics2D g2d = (Graphics2D) g;
g2d.translate(getWidth() / 2, getHeight() / 2);
g2d.setColor(Color.blue);
g2d.drawLine(200, 0, 200, 0);
g2d.drawLine(0, -200, 0, 200);
g2d.fillRect(0, 0, 100, 100);
}
});
// public void paint(Graphics g) {
Graphics2D g2d = (Graphics2D) g;
g2d.translate(getWidth() / 2, getHeight() / 2);
g2d.setColor(Color.blue);
for (int i = 0; i < 377; i++) {
System.out.println(x1[i] + "," + y1[i]);
Line2D line = new Line2D.Double(x1[i] , y1[i] , x1[i + 1] , y1[i + 1] );// 创建line对象
g2d.draw(line);
}
}
通过这个方法画出来线段然后让它在窗体中显示,问题是显示不出来
System.out.println(x1[i] + "," + y1[i]);
Line2D line = new Line2D.Double(x1[i] , y1[i] , x1[i + 1] , y1[i + 1] );
g2d.draw(line);
}
代替g2d.drawLine(200, 0, 200, 0);
g2d.drawLine(0, -200, 0, 200);
g2d.fillRect(0, 0, 100, 100);
但用上面那个窗体中就没有东西,下面这个窗体中就会显示画出来的图和线