⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 aimsclassrender.js

📁 采用arcims结合asp开发的一个webgis系统,针对地下水,实现了曲线时时绘制的功能.
💻 JS
📖 第 1 页 / 共 2 页
字号:
}

function setClassRenderBreaks(theReply) {
	ClassRenderCount = justGetFeatureCount(theReply);
	//alert(ClassRenderCount + " Features");
	if (ClassRenderCount>0) {
		if (ClassRenderCount<ClassRenderClasses) ClassRenderClasses = ClassRenderCount;
		var theValues = getAllFieldValues(theReply,ClassRenderLayerField,ClassRenderCount);
		//alert("Values extracted");
		theValues.sort(numberorder);
		//alert("Values sorted");
		ClassRenderMin = theValues[0];
		ClassRenderMax = theValues[ClassRenderCount-1];
		ClassRenderRange = ClassRenderMax - ClassRenderMin;
		ClassRenderBreakIncrement = ClassRenderRange / ClassRenderClasses;
		ClassRenderRecordIncrement = Math.round(ClassRenderCount / ClassRenderClasses);
		//alert("Min:" + ClassRenderMin + "\nMax:" + ClassRenderMax);
		var msg = crList[13] + "\n";
		if (ClassRenderMethod==0) {
			// equal interval
			j=-1;     
			for (var i=0;i<LayerFieldCount;i++) {
				if (ClassRenderLayerField==LayerFields[i]) j=i;
			}
			if (j!=-1) {
				var u = Math.pow(10, parseInt(LayerFieldPrecision[j]));
			} else {
				//go with value specified in orginal version of this script
				var u = Math.pow(10, numDecimals);
			}
          	msg +="u=" + u + "\n";
			var theIncre = ClassRenderMin;
			for (var i=0;i<ClassRenderClasses;i++) {
				if ( (i>0) && (theIncre!=0) ) {
					// Get ceiling of theIncre at precision. (Round to handle numbers ending in 5)
					ClassRenderBreakMin[i] = Math.round(parseFloat(theIncre * u + (5/10))) / u;
				} else {
					ClassRenderBreakMin[i] = theIncre;
				}
				// Add the increment
				theIncre = theIncre + ClassRenderBreakIncrement;
				if (theIncre!=0) {
                    // Get floor of theIncre at precision 
					ClassRenderBreakMax[i] = parseInt(theIncre * u) / u;
				} else {
					ClassRenderBreakMax[i] = theIncre;
				}
				// alert("CRBMin:" + ClassRenderBreakMin[i] + "\nCRBMax:" + ClassRenderBreakMax[i]);
				msg +=theIncre + "\n";
			}
		} else {
			// quantile
			var theRecord = 0;
			for (var i=0;i<ClassRenderClasses;i++) {
				ClassRenderBreakMin[i] = theValues[theRecord];
				theRecord = theRecord + ClassRenderRecordIncrement;
				if (theRecord>=ClassRenderCount) theRecord = ClassRenderCount-1;
				if (theRecord>0) {
					ClassRenderBreakMax[i] = theValues[theRecord-1];
				} else {
					ClassRenderBreakMax[i] = theValues[theRecord];
				}
				msg +=theValues[theRecord] + "\n";
			}
		}
		// end if statement
		ClassRenderBreakMax[ClassRenderClasses-1] = ClassRenderMax;
		//alert(msg);
		setBreakColors();
		setBreakSizes();
		ClassRenderString[ClassRenderLayerIndex] = ClassRenderStringPrefix[ClassRenderLayerIndex] + setRenderString() + ClassRenderStringSuffix[ClassRenderLayerIndex];
		legTitle = ClassRenderTitle;
		theValues=null;
	}
	hideRetrieveData();
	if (aimsLayersPresent) {
		if ((hasTOC) && (!legendVisible)) parent.TOCFrame.document.location = appDir + "toc.htm";
		if (LayerListOpen) writeLayerListForm();
	}
	sendMapXML();
}

function setRenderString() {
	//ClassRenderShape = LayerType[ActiveLayerIndex];
	var rendString = '<VALUEMAPRENDERER lookupfield="' + ClassRenderLayerField + '">\n';
	for (var z=0;z<ClassRenderClasses;z++) {
		rendString += '<RANGE lower="' + ClassRenderBreakMin[z] + '" upper="' + ClassRenderBreakMax[z] + '" equality="all">\n';
		if (ClassRenderShape=="point") {
			rendString += '<SIMPLEMARKERSYMBOL color="' + ClassRenderBreakColor[z] + '" type="' + ClassRenderStyle[ClassRenderLayerIndex] + '" width="' + ClassRenderBreakSize[z] + '" />\n';
		} else if (ClassRenderShape=="polygon") {
			rendString += '<SIMPLEPOLYGONSYMBOL fillcolor="' + ClassRenderBreakColor[z] + '" filltype="' + ClassRenderStyle[ClassRenderLayerIndex] + '" ';
			
			if (ClassRenderOutlineColor[ClassRenderLayerIndex]!="") {
				rendString += 'boundarycolor="' + ClassRenderOutlineColor[ClassRenderLayerIndex] + '" boundarywidth="' + ClassRenderBreakSize[z] + '" ';
			} else {
				rendString += 'boundary="false" ';
			}
			
			rendString += '/>\n';
		} else {
			rendString += '<SIMPLELINESYMBOL type="' + ClassRenderStyle[ClassRenderLayerIndex] + '" color="' + ClassRenderBreakColor[z] + '" width="' + ClassRenderBreakSize[z] + '" />\n';
		}
		rendString += '</RANGE>\n';
	}
	
	
	rendString += '</VALUEMAPRENDERER>';
	
	return rendString
}

// ramp out colors
function setBreakColors() {
	if (ClassRenderStartColor[ClassRenderLayerIndex]==ClassRenderEndColor[ClassRenderLayerIndex]) {
		// starting and ending colors are the same
		for (var i=0;i<ClassRenderClasses;i++) {
			ClassRenderBreakColor[i] = ClassRenderStartColor[ClassRenderLayerIndex];
		}
	} else {
		var sColors = ClassRenderStartColor[ClassRenderLayerIndex].split(",");
		var eColors = ClassRenderEndColor[ClassRenderLayerIndex].split(",");
		var sRed = parseInt(sColors[0]);
		var sGreen = parseInt(sColors[1]);
		var sBlue = parseInt(sColors[2]);
		var eRed = parseInt(eColors[0]);
		var eGreen = parseInt(eColors[1]);
		var eBlue = parseInt(eColors[2]);
		var rRange = eRed - sRed;
		var gRange = eGreen - sGreen;
		var bRange = eBlue - sBlue;
		var rIncre = parseInt(rRange / ClassRenderClasses);
		var gIncre = parseInt(gRange / ClassRenderClasses);
		var bIncre = parseInt(bRange / ClassRenderClasses);
		var theRed = sRed + rIncre;
		var theGreen = sGreen + gIncre;
		var theBlue = sBlue + bIncre;
		ClassRenderBreakColor[0] = ClassRenderStartColor[ClassRenderLayerIndex];
		ClassRenderBreakColor[ClassRenderClasses-1] = ClassRenderEndColor[ClassRenderLayerIndex];
		for (var i=1;i<(ClassRenderClasses-1);i++) {
			ClassRenderBreakColor[i] = theRed + "," + theGreen + "," + theBlue;
			theRed = theRed + rIncre;
			theGreen = theGreen + gIncre;
			theBlue = theBlue + bIncre;
		}
		sColors=null;
		eColors=null;
		
	}
}

// ramp out sizes
function setBreakSizes() {
	if (ClassRenderStartSize[ClassRenderLayerIndex]==ClassRenderEndSize[ClassRenderLayerIndex]) {
		// starting and ending sizes are the same
		for (var i=0;i<ClassRenderClasses;i++) {
			ClassRenderBreakSize[i] = ClassRenderStartSize[ClassRenderLayerIndex];
		}
	} else {
		ClassRenderBreakSize[0] = ClassRenderStartSize[ClassRenderLayerIndex];
		ClassRenderBreakSize[ClassRenderClasses-1] = ClassRenderEndSize[ClassRenderLayerIndex];
		var sRange = ClassRenderEndSize[ClassRenderLayerIndex] - ClassRenderStartSize[ClassRenderLayerIndex];
		var sIncre = parseInt(sRange * 10 + (5/10)) / 10;
		var theSize = ClassRenderStartSize[ClassRenderLayerIndex] + sIncre;
		for (var i=1;i<(ClassRenderClasses-1);i++) {
			ClassRenderBreakSize[i] = theSize;
			theSize = theSize + sIncre;
		}

	}

}

function calcFieldStats(theReply,theLayer,theField) {
	inCount = justGetFeatureCount(theReply);
	hideRetrieveData();
	var theValues = getAllFieldValues(theReply,theField,inCount);
	var theCount = theValues.length;
	if (theCount>0) {
		
		//alert("Values extracted");
		theValues.sort(numberorder);
		//alert("Values sorted");
		
		var theMin = theValues[0];
		var theMax = theValues[theCount-1];
		var theRange = theMax - theMin;
		var theVarInt = 0;
		var theSum = 0;
		for (var i=0;i<theCount;i++) {
			theSum = theSum + theValues[i];
			theVarInt = theVarInt + Math.pow(theValues[i],2);
		}
		var u = Math.pow(10,numStatDecimals);
		var theAverage = theSum / theCount;
		var theVariance = (theVarInt - theCount * Math.pow(theAverage,2)) / (theCount-1);
		var theStdDev = Math.sqrt(theVariance);
		if (theAverage!=0) theAverage = parseInt(theAverage * u + 0.5) / u;
		if (theStdDev!=0) theStdDev = parseInt(theStdDev * u + 0.5) / u;
		if (theSum!=0) theSum = parseInt(theSum * u + 0.5) / u;
		
		var msg = crList[14] + theField ;
		msg +="\n" + crList[15] + theLayer;
		msg +="\n\n" + crList[16] + theCount + "\n" + crList[17] + theMin;
		msg +="\n" + crList[18] + theMax + "\n" + crList[19] + theSum;
		msg +="\n" + crList[20] + theAverage + "\n" + crList[21] + theRange;
		msg +="\n" + crList[22] + theVariance;
		msg +="\n" + crList[23] + theStdDev;
		
		alert(msg);
	
	} else {
		alert(crList[24]);
	}
	theValues=null;
}

// form for interactive classifying
function writeFieldStatsForm(theIndex) {
	var crIndex = theIndex;
	if (useTextFrame) {
		var Win1 = parent.TextFrame;
		Win1.document.open();
		var t = "parent.MapFrame";
		
	} else {
		var Win1 = open(appDir + "text.htm","RenderWindow","width=575,height=150,scrollbars=yes,resizable=yes");
		var t = "opener";
		if (parent.MapFrame!=null) t = "opener.parent.MapFrame";
	}
	
	Win1.document.writeln('<html><meta http-equiv="Content-Type" content="text/html; charset=' + charSet + '"><HEAD>');
	Win1.document.writeln('<script language="javascript">');
	Win1.document.writeln('		var t = ' + t);
	
	Win1.document.writeln('		function setStyle() {');
	Win1.document.writeln('			var f = document.forms[0];');
	Win1.document.writeln('			var qField = f.QueryField.options[f.QueryField.selectedIndex].value;');
	Win1.document.writeln('			t.setupFieldStats(qField);');
	Win1.document.writeln('		}');
	Win1.document.writeln('		function selectLayer() {');
	Win1.document.writeln('			var f = document.forms[0];');
	Win1.document.writeln('			var theIndex = f.theLayer.selectedIndex;');
	Win1.document.writeln('			t.ClassRenderLayerIndex = theIndex;');
	Win1.document.writeln('			t.fieldStats();');
	Win1.document.writeln('		}');
	Win1.document.writeln('</script>');
	Win1.document.writeln('</head>');

	Win1.document.writeln('<body bgcolor="Black" text="White" topmargin=0 leftmargin=0 rightmargin=0 onload="window.focus()">');
	Win1.document.writeln('<div align="center">');
	Win1.document.writeln('<font face="Arial" size="-2"><b>');
	Win1.document.writeln('<form action="" name="theStatsForm" onsubmit="setStyle(); return false;">');
	Win1.document.writeln('<table cellspacing="2" nowrap bgcolor="' + textFrameFormColor + '" width=100%>');
	Win1.document.writeln('<tr><th colspan="3" align="CENTER">');
	Win1.document.writeln('<font face="Arial" size="-1"><b>' + crList[25] + '</b><br></font>');
	Win1.document.writeln('<font face="Arial" size="-2"><b>' + crList[26] +'</b></font>');
	Win1.document.writeln('</th>');
	Win1.document.writeln('</tr>');
	Win1.document.writeln('<tr>');
	Win1.document.writeln('<td align="Left">');
	Win1.document.writeln('<font face="Arial" size="-1"> ' + crList[5] + '<br>');
	Win1.document.writeln('<select name="theLayer" onchange="selectLayer()">')
	for (var i=0;i<ClassRenderLayer.length;i++) {
		Win1.document.write('	<option value=' + i);
		if (i==crIndex) Win1.document.write(' selected');
		Win1.document.writeln('>' + ClassRenderLayer[i]);
	
	}
	Win1.document.writeln('</select>');
	Win1.document.writeln('</font></td>');
	Win1.document.writeln('<td><font face="Arial" size="-1">' + crList[6] + '<br>');
	Win1.document.writeln('			<select name="QueryField">');
	for (var i=0;i<LayerFieldCount;i++) {
		var typeNum = Math.abs(parseInt(LayerFieldType[i]));
		if ((typeNum>=4) && (typeNum<=9)) {
			Win1.document.write('		<option value="' + LayerFields[i] + '"');
			Win1.document.writeln('>' + LayerFields[i]);
		}
	}
	Win1.document.writeln('			</select>');
	Win1.document.writeln('</font>');
	Win1.document.writeln('</td>');
	
	Win1.document.writeln('<td align="CENTER" valign="BOTTOM">');
	Win1.document.writeln('<input type="Button" name="setDU" value="' + crList[12] + '" onclick="setStyle()">  <br>');
	
	Win1.document.writeln('</td></tr></table></form>');
	Win1.document.writeln('</b></font></div>');
	Win1.document.writeln('</body></html>');
	Win1.document.close();
	Win1=null;
}

// send XML request for field values to setup new custom renderer for the current ClassRenderLayer
function setupFieldStats(theField) {
	ClassRenderLayerField = theField;
	var theLayer = ClassRenderLayer[ClassRenderLayerIndex];
		// get LayerName index
	var j=-1;
	for (var k=0;k<LayerName.length;k++) {
		if (LayerName[k]==theLayer) j=k;
	}
		// get shape type
	var shapeType = LayerType[j];
	var theLayerID = LayerID[j]
	showRetrieveData();
	var theString = writeGetAllValues(theLayerID, shapeType, theField);
	ClassRenderLayerName = theLayer;
	sendGetValuesRequest(theString, 2002);
	
}

// set up the interactive classification
function fieldStats() {
	var j = -1;
	for (var i=0;i<LayerName.length;i++) {
		if (ClassRenderLayer[ClassRenderLayerIndex] == LayerName[i]) j = i;
	}
	if (j>-1) {
		setLayerFields(j);
		fieldIndex=0;
		selectCount=0;
		showBuffer=false;
		ActiveLayer=LayerID[j];
		ActiveLayerType=LayerType[j];
		ActiveLayerIndex=j;
		writeFieldStatsForm(ClassRenderLayerIndex);
	} else {
		alert(crList[27]);
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -