『壹』 Arcgis中如何計算線狀數據的長度,資料庫中shape_leng和shape_length有什麼區別
shape_length就是自帶的 自動生成的長度
『貳』 C++ 設計並實現一個幾何形狀類Shape,並由類Shape派生出矩形類Rect
#include<iostream>
using namespace std;
class Shape{
public:
virtual double peri()=0;
};
class Rect : public Shape{
double length;
double width;
public:
Rect(double len=2,double w=1){
length=len; width=w;
}
double peri(){ return 2*(length+width); }
};
void main(){
Rect r(1, 1);
Shape *p=&r;
cout<< p->peri();
}
『叄』 創建抽象類shape,具有求面積的方法:矩形類rectangle繼承shape類,重寫計算面積
public abstract class Shape {
public abstract double area();
}
--------------------------------------------------
public class Rectangle extends Shape {
double length;//矩形的長
double width;//矩形的寬
public Rectangle(double len,double wid) {//構造方法
this.length = len;
this.width = wid;
}
@Override
public double area() {//返回矩形的面積
double area = length * width;
return area;
}
}
--------------------------------------------------
public class Circle extends Shape {
double radius;//圓的半徑
public Circle(double rad) {//構造方法
this.radius = rad;
}
@Override
public double area() {//返回園的面積
double area = 3.14 * radius * radius;
return area;
}
}
--------------------------------------------------
public class MyTest {//測試類
public static void main(String[] args) {
Rectangle rec = new Rectangle(4.7, 5.1);
double recArea = rec.area();
System.out.println("矩形的長5.1,寬4.7,面積:" + recArea);
Circle cir = new Circle(6.4);
double cirArea = cir.area();
System.out.println("園的半徑6.4,面積:" + cirArea);
}
}
『肆』 arcgis Shape_Length欄位為什麼只顯示小數點位數
欄位右擊選擇欄位屬性再點框三點表示按鈕彈框選自定義再右邊拉列表選擇想要格式
6 SAF DBP inp err DBP 繼電器輸入錯誤 DBP 繼電器反饋觸點所要求作致或者 LVC 輸入門鎖旁路期望狀態致
『伍』 新人求教如何使用shape context演算法進行簡單的圖形判斷
因此面向人、尤其是人臉的視頻理解技術也是視頻監控系統實現智能化的基礎。
本文對智能視頻監控的相關技術進行了探索和研究,重點對於視頻監控中的目標識別和人臉匹配進行了研究和探討。形狀匹配是計算機視覺和模式識別的一個基本問題,它被應用到很多領域,如目標識別、基於內容的圖像檢索等。
傳統的Shape Context演算法用於對簡單圖形進行形狀匹配。
『陸』 ArcGIS Desktop Shape_Length問題
這個不一定,有些工具生成的線要素 Shape_Length是代表實際長度的。有些則不是。
建議你打開屬性表,新建一個欄位,右鍵菜單中使用「計算幾何」工具,選長度,即可求出線要素准確的實際長度。
『柒』 急:聲明一個抽象類Shape,有抽象成員方法area和girth分別計算面積和周長.
//Test.java
public class Test {
public static void main(String[] args) {
Rectangle r = new Rectangle(12,10);
System.out.println("面積:"+r.area());
System.out.println("周長:"+r.girth());
}
}
abstract class Shape{
public abstract int area();
public abstract int girth();}
class Rectangle extends Shape{
private int w,h;
public Rectangle(int w,int h){this.w=w;this.h=h;}
public int area() {return w*h;}
public int girth() {return (w+h)*2;}}
『捌』 python編寫用pow()函數計算球的體積
使用鍵盤輸入值並不是編輯表中值的唯一方式。在某些情況下,為了設置欄位值,可能要對單條記錄甚至是所有記錄執行數學計算。您可以對所有記錄或選中記錄執行簡單計算和高級計算。此外,還可以在屬性表中的欄位上計算面積、長度、周長和其他幾何屬性。以下各部分包括使用欄位計算器的若干示例。使用 Python、SQL 和 Arcade 執行計算。
本主題著重於基於 Python 的計算欄位示例。要了解有關 Arcade 表達式的詳細信息,請參閱 ArcGIS Arcade 指南。要了解有關 SQL 表達式的詳細信息,請參閱計算欄位。
註:
Python 強制將縮進作為語法的一部分。請使用兩個或四個空格來定義每個邏輯級別。將語句塊的開頭和結尾對齊並且保持一致。
Python 計算表達式欄位將使用驚嘆號 (!!) 括起。
命名變數時,請注意 Python 區分大小寫,因此 value 不同於 Value。
輸入語句後,如果想將其寫入文件,請單擊導出。導入按鈕將提示您查找和選擇一個現有的計算文件。
簡單計算
僅通過一個短表達式就可以計算出多種計算結果。
簡單字元串示例
一系列 Python 字元串函數均支持使用字元串,包括 capitalize、rstrip 和 replace。
將 CITY_NAME 欄位中字元串的首字母大寫。
!CITY_NAME!.capitalize()
去掉 CITY_NAME 欄位中自字元串結尾起的所有空白區。
!CITY_NAME!.rstrip()
將 STATE_NAME 欄位中的「california」全部替換為「California」。
!STATE_NAME!.replace("california", "California")
在 Python 中,字元串欄位中的字元可以通過索引和分割操作進行訪問。索引操作將在索引位置提取字元,而分割操作則會提取一組字元。在下表中,假設 !fieldname! 是值為 "abcde" 的字元串欄位。
示例
說明
結果
!fieldname![0]
第一個字元
"a"
!fieldname![-2]
倒數第二個字元
"d"
!fieldname![1:4]
第二、三和四個字元
"bcd"
Python 也支持使用 format() 方法的字元串格式。
將合並後的 FieldA 和 FieldB 以冒號分隔開。
"{}:{}".format(!FieldA!, !FieldB!)
常見 Python 字元串操作
簡單數學示例
Python 提供了處理數字的工具。Python 也支持一些數值和數學函數,包括 math、cmath、decimal、random、itertools、functools 和 operator。
運算符
說明
示例
結果
x + y
x 加上 y
1.5 + 2.5
4.0
x - y
x 減去 y
3.3 - 2.2
1.1
x * y
x 乘以 y
2.0 * 2.2
4.4
x / y
x 除以 y
4.0 / 1.25
3.2
x // y
x 除以 y(向下取整除法)
4.0 // 1.25
3.0
x % y
x 模 y
8 % 3
2
-x
x 的負數表達式
x = 5
-x
-5
+x
x 不變
x = 5
+x
5
x ** y
以 x 為底,以 y 為指數的冪
2 ** 3
8
乘
!Rank! * 2
根據給定的半徑欄位計算球體的體積。
4.0 / 3.0 * math.pi * !Radius! ** 3
舊版本:
在 ArcGIS Pro 中,使用的是 Python 3,在 ArcGIS Desktop 中,使用的 Python 2。Python 2 使用的是整型數學計算,這就意味著兩個整型值相除將始終生成整型值 (3 / 2 = 1)。在 Python 3 中,兩個整型值相除將生成浮點型值 (3 / 2 = 1.5)。
Python 內置函數
Python 包含多個可用的內置函數,包括 max、min、round 和 sum。
Python 內置函數
通過欄位列表計算每條記錄的最大值。
max([!field1!, !field2!, !field3!])
通過欄位列表計算每條記錄的總和。
sum([!field1!, !field2!, !field3!])使用代碼塊
通過 Python 表達式和代碼塊參數可執行以下操作:
在表達式中應用任意 Python 函數。
訪問地理處理函數和對象。
訪問要素幾何的屬性。
訪問新的隨機值運算符。
使用 if-then-else 邏輯對值進行重分類。
表達式類型
代碼塊
Python 3
支持 Python 功能。使用 Python 函數 (def) 表示代碼塊。在適當的情況下,幾何屬性將通過地理處理對象表示(如點對象)。
Arcade
支持 Arcade 功能。
SQL
支持 SQL 表達式。
執行 SQL 表達式可以更好地支持使用要素服務和企業級地理資料庫的計算,尤其是在性能方面。使用該表達式可以將單次請求設置為要素服務或資料庫,而不必一次執行一個要素或一行的計算。
舊版本:
在 ArcGIS Desktop 中,計算欄位工具支持 VB、PYTHON 和 PYTHON_9.3 表達式類型。VB 表達式類型,在某些產品中受支持,但在 64 位產品中不受支持,其中包括 ArcGIS Pro。
出於相後兼容性考量,ArcGIS Pro 中仍然支持 PYTHON 和 PYTHON_9.3 關鍵字,但是不會作為選擇列出。使用這些關鍵字的 Python 腳本將可繼續使用。
Python 3 表達式類型與舊版 PYTHON_9.3 關鍵字的唯一區別在於 Python 3 會將日期欄位中的值作為 Python datetime 對象返回。
註:
Python 3 表達式類型與隨 ArcGIS Pro 安裝的 Python 版本無關。這只是歷史上的第三個 Python 相關關鍵字(繼 PYTHON 和 PYTHON_9.3 之後。
各 Python 函數可通過 def 關鍵字定義,關鍵字後為函數名稱及函數的輸入參數。可編寫 Python 函數,使 Python 函數能夠接受任何數量的輸入參數(也可以沒有任何參數)。函數將通過 return 語句返回值。函數名稱可由您自行選取(不得使用空格,也不得以數字開頭)。
註:
如果函數未通過 return 語句顯式返回值,則函數將返回 None。
註:
請牢記,Python 強制要求將縮進作為語法的一部分。請使用四個空格來定義每個邏輯級別。將語句塊的開頭和結尾對齊並且保持一致。
代碼示例 - 數學
在使用以下數學示例時,請假設表達式類型為 Python 3。
將欄位的值四捨五入為保留兩位小數。
表達式:
round(!area!, 2)
通過 math 模塊將米轉換成英尺。以轉換值為底,以 2 為指數進行冪運算,然後再乘以 area。
表達式:
MetersToFeet((float(!shape.area!)))
代碼塊:
import math
def MetersToFeet(area):
return math.pow(3.2808, 2) * area通過 Python 邏輯計算欄位
可以使用 if、else 和 elif 語句將邏輯模式包含在代碼塊中。
按照欄位值進行分類。
表達式:
Reclass(!WELL_YIELD!)
代碼塊:
def Reclass(WellYield):
if (WellYield >= 0 and WellYield <= 10):
return 1
elif (WellYield > 10 and WellYield <= 20):
return 2
elif (WellYield > 20 and WellYield <= 30):
return 3
elif (WellYield > 30):
return 4代碼實例 - 幾何
除以下代碼示例外,請參閱下方的「幾何單位轉換」部分,以了解有關轉換幾何單位的詳細信息。
計算某要素的面積。
表達式:
!shape.area!
計算某要素的最大 x 坐標。
表達式:
!shape.extent.XMax!
計算某要素中的折點數。
表達式:
MySub(!shape!)
代碼塊:
def MySub(feat):
partnum = 0
# Count the number of points in the current multipart feature
partcount = feat.partCount
pntcount = 0
# Enter while loop for each part in the feature (if a singlepart
# feature, this will occur only once)
while partnum < partcount:
part = feat.getPart(partnum)
pnt = part.next()
# Enter while loop for each vertex
while pnt:
pntcount += 1
pnt = part.next()
# If pnt is null, either the part is finished or there
# is an interior ring
if not pnt:
pnt = part.next()
partnum += 1
return pntcount
將點要素類中每個點的 x 坐標平移 100。
表達式:
shiftXCoordinate(!SHAPE!)
代碼塊:
def shiftXCoordinate(shape):
shiftValue = 100
point = shape.getPart(0)
point.X += shiftValue
return point幾何單位轉換
幾何欄位的面積和長度屬性可通過用 @ 符號表示的單位類型進行修改。
面積測量單位關鍵字:
ACRES | ARES | HECTARES | SQUARECENTIMETERS | SQUAREDECIMETERS | SQUAREINCHES | SQUAREFEET | SQUAREKILOMETERS | SQUAREMETERS | SQUAREMILES | SQUAREMILLIMETERS | SQUAREYARDS | SQUAREMAPUNITS | UNKNOWN
線性測量單位關鍵字:
CENTIMETERS | DECIMALDEGREES | DECIMETERS | FEET | INCHES | KILOMETERS | METERS | MILES | MILLIMETERS | NAUTICALMILES | POINTS | UNKNOWN | YARDS
註:
如果數據存儲在地理坐標系中且具有線性單位(例如英尺),則會通過測地線演算法轉換長度計算的結果。
警告:
轉換地理坐標系中數據的面積單位會生成不正確的結果,這是由於沿 globe 的十進制度並不一致。
計算某要素的長度(以碼為單位)。
表達式:
!shape.length@yards!
計算某要素的面積(以英畝為單位)。
表達式:
!shape.area@acres!
測地線面積和長度也可以通過帶 @(後跟測量單位關鍵字)的 geodesicArea 和 geodesicLength 屬性進行計算。
計算某要素的測地線長度(以碼為單位)。
表達式:
!shape.geodesicLength@yards!
計算某要素的測地線面積(以英畝為單位)。
表達式:
!shape.geodesicArea@acres!代碼實例 - 日期
日期和時間可使用 datetime 和 time 模塊進行計算。
計算當前日期。
表達式:
time.strftime("%d/%m/%Y")
計算當前日期和時間。
表達式:
datetime.datetime.now()
計算的日期為 2000 年 12 月 31 日。
表達式:
datetime.datetime(2000, 12, 31)
計算當前日期和欄位中的值之間的天數。
表達式:
(datetime.datetime.now() - !field1!).days
通過向欄位中的日期值添加 100 天來計算日期。
表達式:
!field1! + datetime.timedelta(days=100)
計算欄位中的日期值為一周中的周幾(例如,星期天)。
表達式:
!field1!.strftime('%A')代碼實例 - 字元串
可以使用多種 Python 編碼模式來完成字元串計算。
返回最右側三個字元。
表達式:
!SUB_REGION![-3:]
將所有大寫字母 P 替換為小寫字母 p。
表達式:
!STATE_NAME!.replace("P","p")
通過空格分隔符串連兩個欄位。
表達式:
!SUB_REGION! + " " + !STATE_ABBR!轉換為正確的大小寫形式
下列各例顯示的是轉換單詞的不同方法,這些方法可使每個單詞的首字母變為大寫、其餘字母變為小寫。
表達式:
' '.join([i.capitalize() for i in !STATE_NAME!.split(' ')])表達式:
!STATE_NAME!.title()正則表達式
Python 的 re 模塊提供了正則表達式匹配操作,可用於對字元串執行復雜的模式匹配和替換規則。
re - 正則表達式運算正則表達式的用法
使用單詞 Street 替換 St 或 St.,在字元串的末尾生成一個新單詞。
表達式:
update_street(!ADDRESS!)
代碼塊:
import re
def update_street(street_name):
return re.sub(r"""(St|St.)""",
'Street',
street_name)累加計算和順序計算
可以使用全局變數來進行累加計算和順序計算。
根據某間隔值計算順序 ID 或數字。
表達式:
autoIncrement()
代碼塊:
rec=0
def autoIncrement():
global rec
pStart = 1 # adjust start value, if req'd
pInterval = 1 # adjust interval value, if req'd
if (rec == 0):
rec = pStart
else:
rec = rec + pInterval
return rec
計算數值型欄位的累加值。
表達式:
accumulate(!FieldA!)
代碼塊:
total = 0
def accumulate(increment):
global total
if total:
total += increment
else:
total = increment
return total
計算數值型欄位的百分比增量。
表達式:
percentIncrease(float(!FieldA!))
代碼塊:
lastValue = 0
def percentIncrease(newValue):
global lastValue
if lastValue:
percentage = ((newValue - lastValue) / lastValue) * 100
else:
percentage = 0
lastValue = newValue
return percentage隨機值
可以使用 random 模塊來計算隨機值。
通過 numpy 站點包來計算 0.0 和 1.0 之間的隨機浮點值。
表達式:
getRandomValue()
代碼塊:
import numpy
def getRandomValue():
return numpy.random.random()
使用隨機模塊來計算 0 與 10 之間的隨機整數。
表達式:
random.randint(0, 10)
代碼塊:
import random計算空值
在 Python 表達式中,可通過 Python None 來計算空值。
註:
僅當該欄位為空時,才可以進行以下計算。
使用 Python None 計算空值。
表達式:
None相關主題
有關欄位計算的基礎知識
授權轉載:gisoracle
網課學習 + 權威結業證書
我們精心匯總了一些相對簡單
培訓考核通過便可獲取的證書
自然資源部職鑒中心發證
可用於招投標、資質系統
等
測繪師繼續教育20學時
中國測繪網新媒體中心
商務合作/微信 214979525
『玖』 arcgis柵格轉面融合不顯示shapelength
shp文件損壞或者殘缺
一個SHP文件最起碼要有DBF,SHP,SHX三個文件才可以打開,很有可能是文件殘缺。
『拾』 arcgis中的shape leng和shape area什麼意思,是圖層中斑塊周長和面積嗎
arcgis中的shape leng和shape area什麼意思,是圖層中斑塊周長和面積嗎?
答:不對。length是英文單詞長度,area是英文單詞面積的意思。