📄 roadbianma.java
字号:
package net.aetherial.gis.jiaotongbu.outputJTB.txtOutput.module.gpsdata.bianma;
import net.aetherial.gis.jiaotongbu.output.publicuse.Item;
import org.w3c.dom.Node;
import net.aetherial.gis.surface.ItemValue;
import net.aetherial.gis.dataType.TrackType;
/**
* <p>Title: </p>
*
* <p>Description: </p>
*
* <p>Copyright: Copyright (c) 2004</p>
*
* <p>Company: </p>
*
* @author not attributable
* @version 1.0
*/
public class RoadBianma {
private static long bianmaIncrease = 100;
private static int zhuanyIncrease = 100;
private static int cunIncrease = 100;
private static int xiangIncrease = 100;
private static int xianIncrease = 100;
private static int shengIncrease = 100;
private static int guoIncrease = 100;
public static final String FLAG_G = "G";
public static final String FLAG_S = "S";
public static final String FLAG_X = "X";
public static final String FLAG_Y = "Y";
public static final String FLAG_C = "C";
public static final String FLAG_Z = "Z";
public static final String CODE = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
/**
* 默认的编码方式
*/
public static String getRoadDefaultRightNumber(Node trk){
if (trk == null) {
return "Z" + getBianmaIncrease() + Item.getSix_6_XianNumber();
}
String number = ItemValue.getTracksNumber(trk);
// String grade = ItemValue.getTracksGrade(trk);
if (number.length() == 12) {
return number;
}else if(number.trim().equals("")){
return getRoadGradeCode(trk) + getBianmaIncrease() + Item.getSix_6_XianNumber();
}else if(number.trim().length() == 4){
return number.trim() + Item.getSix_6_XianNumber();
}else{
return number.substring(0,3) + Item.getSix_6_XianNumber();
}
}
/**
* 需要先把编码完成
* 然后再取GPS里的数据
*/
public static String getGPSNumber(Node trk){
return ItemValue.getTracksNumber(trk);
}
public static String getRoadNewRightNUmber(Node trk){
String flag = getRoadGradeCode(trk);
return getRoadNewRightNUmber(flag);
}
public static String getRoadNewRightNUmber(String flag) {
if (flag.equals(FLAG_G)) {
return flag + getIncrease(++guoIncrease) + Item.getSix_6_XianNumber();
}else if(flag.equals(FLAG_S)){
return flag + getIncrease(++shengIncrease) + Item.getSix_6_XianNumber();
}else if(flag.equals(FLAG_X)){
return flag + getIncrease(++xianIncrease) + Item.getSix_6_XianNumber();
}else if(flag.equals(FLAG_Y)){
return flag + getIncrease(++xiangIncrease) + Item.getSix_6_XianNumber();
}else if(flag.equals(FLAG_C)){
return flag + getIncrease(++cunIncrease) + Item.getSix_6_XianNumber();
}else if(flag.equals(FLAG_Z)){
return flag + getIncrease(++zhuanyIncrease) + Item.getSix_6_XianNumber();
}
return "";
}
public static void main(String [] args){
char a = 64;
for(int i = 998; i< 1102 ; i++){
System.out.println(getIncrease(i));
}
}
private static String getIncrease(int number){
if (number < 1000) {
return number+"";
}else{
int temp = number - 1000;
long last = temp % 100;
return ""+CODE.charAt((int)Math.floor((temp-last)/100))+((last < 10) ? ("0"+last):(""+last))+"";
}
}
/**
* 打印编码
*/
public static void printBianma(){
Node[] trks = ItemValue.getTracks();
String temp = "";
if (trks != null) {
for (int i = 0; i < trks.length; i++) {
temp = ItemValue.getTracksNumber(trks[i]).trim();
if (!temp.equals("")) {
if (isBianmaSuitable(temp)) {
System.out.println("路线:[" + ItemValue.getTracksName(trks[i]) + "], 编码:" + temp);
}else{
System.out.println("路线:[" + ItemValue.getTracksName(trks[i]) + "], 编码:" + temp + " 不符合.in " + ItemValue.getTracksT3(trks[i]));
}
}
}
}
}
/**
* 是否符合
*/
public static boolean isBianmaSuitable(String gpsNumber){
gpsNumber = gpsNumber.trim();
if (gpsNumber.length() >4) {
gpsNumber = gpsNumber.substring(0,4);
}else if(gpsNumber.length() < 4){
return false;
}
char[] temp = gpsNumber.toCharArray();
int intValue = 0;
for (int i = 0; i < temp.length; i++) {
intValue = (int)temp[i];
if (!((intValue >= 48)&&(intValue <= 122))) {
return false;
}
}
return true;
}
public static String getBianmaSuitable(String gpsNumber){
gpsNumber = gpsNumber.trim();
return gpsNumber.substring(0,4);
}
public static void reset(){
bianmaIncrease = 100;
cunIncrease = 100;
xiangIncrease = 100;
xianIncrease = 100;
shengIncrease = 100;
guoIncrease = 100;
}
private static String getBianmaIncrease(){
bianmaIncrease++;
if (bianmaIncrease >= 1000) {
long temp = ((bianmaIncrease - 1000)/100) + 65;
char ch = (char)temp;
return fillStringWith0(ch + "" + (bianmaIncrease -1000));
}else{
return bianmaIncrease+"";
}
}
private static String fillStringWith0(String str){
if (str.length() == 4) {
return str;
}
else if (str.length() == 0){
return "Z001";
}
else if (str.length() < 4) {
char fir = str.charAt(0);
String temp = str.substring(1,str.length());
if (temp.length() == 2) {
return fir + "0" + temp;
}
else if (temp.length() == 1) {
return fir + "00" + temp;
}
else {
return fir + "000" + temp;
}
}else {
return str.substring(0,4);
}
}
/**
* 得到按等级划分的标志符
*/
private static String getRoadGradeCode(Node trk){
String grade = ItemValue.getTracksGrade(trk);
return getRoadGradeCode(grade);
}
public static String getRoadGradeCode(String grade){
if (grade.equals(TrackType.Grade_GUO)) {
return "G";
}else if (grade.equals(TrackType.Grade_SHEN)) {
return "S";
}else if (grade.equals(TrackType.Grade_XIAN)) {
return "X";
}else if (grade.equals(TrackType.Grade_XIANG)) {
return "Y";
}else if (grade.equals(TrackType.Grade_CUN)) {
return "C";
}else{
return "C";//return getGradeIfGradeisEmpty(trk);
}
}
/**
* 默认的编码方式
*/
public static String getRoadXiangDaoRightNumber(String number){
if (number.length() == 12) {
return number;
}else if(number.trim().equals("")){
return "X000000000";
}else if(number.trim().length() == 4){
return number.trim() + "000000";
}else{
return number.substring(0,3) + "000000";
}
}
/**
* 根据路线的长度来决定等级
*/
private static String getGradeIfGradeisEmpty(Node trk){
double dis = ItemValue.getTracksDistance(trk);
if (dis <2000) {
return "C";
}else if( (2000 <= dis)&&(dis <10000)){
return "Y";
}else{
String name = ItemValue.getTracksName(trk);
if ((name.toLowerCase()).indexOf("x") != -1) {
return "X";
}else if((name.toLowerCase()).indexOf("s") != -1){
return "S";
}else if((name.toLowerCase()).indexOf("g") != -1){
return "G";
}else{
return "Y";
}
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -