我有經度和緯度的數組。現在我想創建一些點。我怎麼能在postgresql中做到這一點? 我寫這樣的東西不起作用。如何在lan和lat點數組中創建postgres中的點
my $data = {
type => 'Feature',
geometry => {
type => "Point",
coordinates => [@lon[0],@lat[0]]
}
};
任何幫助嗎?
我有經度和緯度的數組。現在我想創建一些點。我怎麼能在postgresql中做到這一點? 我寫這樣的東西不起作用。如何在lan和lat點數組中創建postgres中的點
my $data = {
type => 'Feature',
geometry => {
type => "Point",
coordinates => [@lon[0],@lat[0]]
}
};
任何幫助嗎?
在Perl 5中,sigil(變量名前面的[email protected]%&*
)表示不是您正在使用的變量的類型,而是更類似於您作爲值訪問結果所期待的類型。這很重要,因爲Perl中的一個和相同的語句可以根據列表與標量上下文來評估不同的值。
I.e.如果我們有一個數組@a = (1, 2, 3, 4, 5)
並且第一個元素是標量1
,那麼我們將以$a[0]
的身份訪問它。
但是,您可以訪問一次多個元素:@a[0 .. 2, -1]
會返回一個列表(1, 2, 3, 5)
,所以這是我們訪問與@
印記數組元素的只有情況。
因此,儘管使用Perl與no strict
時寫@lat[0]
和@lon[0]
有時是可能的,這是有點不好的風格,應始終寫成$lon[0]
和$lat[0]
。
如果您建造一個$data
循環內,並不需要@lat
和@lon
之後,你可以shift
從數組的第一個元素。
while (@lat and @lon) { # a condition is a scalar context — evaluates to array *length*
my $data = {
type => 'Feature',
geometry => {
type => 'Point',
coordinates => [shift @lon, shift @lat],
},
};
# insert data point
}
這個循環,只要有在@lat
和@lon
元件運行。然而,造型的座標作爲一個單獨的lon
和lat
值可能使插入DB更容易和你的數據更好檢索:
geometry => {
type => 'Point',
lon => (shift @lon),
lat => (shift @lat),
},
你能否更具體?那麼postgres呢?它與你的問題有什麼聯繫? –
'@lon [0]'很奇怪,即使我們不知道代碼之前的定義。你不想寫'$ lon [0]'? –