📄 tongda.java
字号:
package net.aetherial.gis.jiaotongbu.outputJTB.txtOutput.module.gpsdata.tongda;
import org.w3c.dom.Node;
import net.aetherial.gis.publicuse.TrackOper;
import net.aetherial.gis.surface.ItemValue;
import net.aetherial.gis.publicuse.track.TrackDecussate;
import java.util.Vector;
/**
* <p>Title: </p>
*
* <p>Description: 通达路线的对象集合</p>
* 由net.aetherial.gis.jiaotongbu.outputJTB.txtOutput.module.colligate.XiangzhenTongDa对象给定经纬度
* 本类可以得出通达路线的数目,
* <p>Copyright: Copyright (c) 2004</p>
*
* <p>Company: </p>
*
* @author not attributable
* @version 1.0
*/
public class TongDa {
private double lon_x,lat_y;
/**
* 是否是乡镇通达
* false为建制村通达
*/
private boolean isXiangzhenTongda = true;
private String xiangzhenName = "";
public TongDa() {
}
/**
* 设置关键点的坐标
*/
public void setKeyPointCoordinate(double lon_x,double lat_y){
this.lat_y = lat_y;
this.lon_x = lon_x;
}
/**
* 设置关键点的坐标
*/
public void setKeyPointCoordinate(String lon_x,String lat_y){
this.lat_y = Double.parseDouble(lat_y);
this.lon_x = Double.parseDouble(lon_x);
}
/**
* 得到相近的几条航迹
*/
private String[] getNearTrack(){
/**
*
*/
if (this.isXiangzhenTongda) {
if (GanxianTrack.ganxian != null) {
String[] node = new String[1];
node[0] = TrackOper.getTDTrackNearest(this.lon_x, this.lat_y,
GanxianTrack.ganxian, 1000);
return node;
}
}
return TrackOper.getTDTracks(this.lon_x,this.lat_y,500);
}
/**
* 根据本类的通达航迹组建成XiangzhenTD数组对象
*/
public XiangzhenTD[] getXiangzhenTDInstance(){
this.isXiangzhenTongda = true;
String[] trks = this.getTongdaTrack();
if (trks == null) {
return null;
}else{
XiangzhenTD[] td = new XiangzhenTD[trks.length];
for (int i = 0; i < td.length; i++) {
td[i] = new XiangzhenTD(trks[i]);
td[i].setPoint(this.lon_x,this.lat_y);
td[i].setXiangzhenName(this.xiangzhenName);
}
return td;
}
}
/**
* 根据本类的通达航迹组建成JianzhicunTD数组对象
*/
public JianzhicunTD[] getJianzhicunTDInstance(){
this.isXiangzhenTongda = false;
String[] trks = this.getTongdaTrack();
if (trks == null) {
return null;
}else{
JianzhicunTD[] td = new JianzhicunTD[trks.length];
for (int i = 0; i < td.length; i++) {
td[i] = new JianzhicunTD(trks[i]);
td[i].setPoint(this.lon_x,this.lat_y);
}
return td;
}
}
/**
* 判断并得到是通达的航迹
*/
private String[] getTongdaTrack(){
String[] trks = this.getNearTrack();
if (!this.isXiangzhenTongda) {
return trks;
}
if (trks == null) {
System.out.println("没有相近的通达航迹!");
return null;
}
/**
* 如果是乡镇通达,则直接返回相近的通达航迹
*/
if (this.isXiangzhenTongda) {
return trks;
}
/**
* 如果干线是空值,则将相近的几条航迹全设置成通达路线
*/
if (GanxianTrack.ganxian == null) {
return trks;
}
Vector ve = new Vector();
TrackDecussate td = new TrackDecussate();
for (int i = 0; i < trks.length; i++) {
Vector nodes = (Vector)ItemValue.namedTracks.get(trks[i]);
boolean across = false;
for(int n=0; nodes != null && n < nodes.size(); n++){
Node node = (Node) nodes.get(n);
td.setTrack1(node);
for (int j = 0; j < GanxianTrack.ganxian.length; j++) {
Vector gx = (Vector)ItemValue.namedTracks.get(GanxianTrack.ganxian[j]);
for(int g = 0; gx != null && g < gx.size(); g ++){
Node gxItem = (Node) gx.get(g);
td.setTrack2(gxItem);
if (td.isTLinkOrXDecussate()) {
ve.add(trks[i]);
across = true;
break;
}
else {
// System.out.println("相近的通达航迹与主干线不连接! ---" + ItemValue.getTracksName(trks[i]));
}
}
if(across) break;
}
if(across) break;
}
}
if (ve.size() == 0) {
return trks;
}else{
trks = new String[ve.size()];
for (int i = 0; i < trks.length; i++) {
trks[i] = (String)ve.elementAt(i);
// System.out.println("找到通达路线:" + ItemValue.getTracksName(trks[i]));
}
return trks;
}
}
public void setXiangzhenName(String xiangzhenName) {
this.xiangzhenName = xiangzhenName;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -