真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

mysql經(jīng)緯度怎么儲存 mysql計算經(jīng)緯度之間的距離

mysql存儲地圖經(jīng)緯度的表,怎么設(shè)計?

建議你看下MongoDB數(shù)據(jù)庫。

創(chuàng)新互聯(lián)公司"三網(wǎng)合一"的企業(yè)建站思路。企業(yè)可建設(shè)擁有電腦版、微信版、手機版的企業(yè)網(wǎng)站。實現(xiàn)跨屏營銷,產(chǎn)品發(fā)布一步更新,電腦網(wǎng)絡(luò)+移動網(wǎng)絡(luò)一網(wǎng)打盡,滿足企業(yè)的營銷需求!創(chuàng)新互聯(lián)公司具備承接各種類型的成都網(wǎng)站建設(shè)、網(wǎng)站設(shè)計項目的能力。經(jīng)過10年的努力的開拓,為不同行業(yè)的企事業(yè)單位提供了優(yōu)質(zhì)的服務(wù),并獲得了客戶的一致好評。

MongoDB提供了一種GEO數(shù)據(jù)類型,專門處理地理位置坐標的,跟你這個應(yīng)用場景極其吻合。

另外你的坐標數(shù)量是海量的,用MySQL很難抗的住。

MySQL到千萬級的數(shù)據(jù)量就很吃力了。

兩種方式不同點在于前者把數(shù)據(jù)作為文件上傳,后者是把NSData作參POST上傳,覺得作為客戶端,其實工作量都差不多,關(guān)鍵是后臺了,另外,文件上傳的好處就是能知道上傳進度,后者的亂碼,我不知道你怎么傳的,反正base64編碼后再上傳是沒問題的。

緯度和度量在MySQL數(shù)據(jù)庫中怎么存儲

可以使用字符串varchar,然后取出數(shù)據(jù)之后將字符串轉(zhuǎn)化為double類型或float類型

可以存儲這些經(jīng)/緯度數(shù)據(jù),如波紋管 -

$arr = array("13.692941, 100.750723",?

"13.70649,100.75405999999998",

"13.71334,100.75428999999997",

"13.72268,100.74638000000004");

// serialize data before save to database, you should deserialized that when you will use this data after query.?

$serializedArr = serialize($arr);

insert into geom (g) values ("{$serializedArr}");

MySQL的GIS、GEO入門筆記

探索和學(xué)習(xí)MySQL中GIS相關(guān)功能和特性

這里記錄了學(xué)習(xí)和了解MySQL中GIS特性相關(guān)內(nèi)容的過程。

MySQL官方論壇中GIS的舉例

測試數(shù)據(jù)已經(jīng)導(dǎo)入成功,下面開始對GIS相關(guān)函數(shù)和GEOHASH進行了解和體驗;

mysql中g(shù)eometry類型的簡單使用

MySQL空間數(shù)據(jù)類型

經(jīng)緯度信息存儲在geometry格式的字段中,該字段必須非空。

MySQL8.0前按照longitude-latitude的順序存儲位置

MySQL8.0前按照longitude-latitude的順序存儲位置

MySQL8.0前按照longitude-latitude的順序存儲位置

插入數(shù)據(jù)時候可使用如下語句:

MySQL存儲geometry信息的方式采用了25bytes,相比WKB的21bytes,多了4bytes的坐標系表示,組成部分如下:

WTF字符串格式說明

select ST_GeomFromText(WTF格式字符串);

WKT(Well-known text)是一種文本標記語言,用于表示矢量幾何對象、空間參照系統(tǒng)及空間參照系統(tǒng)之間的轉(zhuǎn)換。通過WTF字符串生成geometry的方法:

點: POINT(x y)

線: LINESTRING(x1 y1, x2 y2, x3 y3...)

多邊形: POLYGON((0 0, 10 0, 10 10,0 10,0 0),(5 5,7 5,7 7,5 7,5 5))

多點集: MULTIPOINT(0 0, 20 20, 60 60) 或 MULTIPOINT((0 0),(5 5),(5 0))

多線集: MULTILINESTRING((10 10, 20 20), (15 15, 30 15))

多多邊形集: MULTIPOLYGON(((0 0,10 0,10 10,0 10,0 0)),((5 5,7 5,7 7,5 7, 5 5)))

例如兩點一線組成的幾何集: GEOMETRYCOLLECTION(POINT(10 10), POINT(30 30), LINESTRING(15 15, 20 20))

A geometry is syntactically well-formed if it satisfies conditions such as those in this (nonexhaustive) list:

Collections are not empty (except GeometryCollection)

更多內(nèi)容參見

ST_PointFromText('POINT(X Y)');

ST_LineStringFromText('LINESTRING(0 0,1 1,2 2)');

ST_PolygonFromText('POLYGON((0 0,10 0,10 10,0 10,0 0),(5 5,7 5,7 7,5 7,5 5))');

ST_GeomCollFromText();

更多內(nèi)容參見

參見

Point(x,y)

LineString((x1,y1),(x2,y2)...)

Polygon(LineString(),LineString()....)

參見

ST_AsText()

ST_AsBinary()

ST_AsWKT()

參見

ST_Dimension(geom) :返回geom的維度(-1,0,1,2)

ST_Envelope(geom) :返回geom的最小外接矩形(MBR)

ST_GeometryType(geom) :返回geom的類型

ST_IsEmpty(geom) :該函數(shù)并不能真實的判空,當geom為任何有效的幾何值時返回0,無效的幾何值返回1;

ST_IsSimple(geom) :當geom無任何異常幾何點返回1(如自相交和自切線等),否則返回0

ST_SRID(geom) :返回geom的坐標系ID

參見

ST_X(Point) :獲取Point的X值

ST_Y(Point) :獲取Point的Y值

參見

ST_StartPoint(linestrng) : 線的起點

ST_EndPoint(linestring) :返回線的最后一個點

ST_IsClosed(linestring或multilinestring) :線是否閉合(若為線,則判斷起點與終點是否一致;若為線組,則判斷組內(nèi)每個元素是否符合閉合線)

ST_Length(linestring) :返回線的長度,若入?yún)榫€集,則返回集合內(nèi)所有長度的和

ST_NumPoiints(linestring) :返回點的數(shù)量;

ST_PointN(linestring,N) :返回第N個點(從1開始)

參見

具體不在一一列舉,主要有計算多邊形面積、中心點、最小外接圓,最大內(nèi)接圓等函數(shù),列舉幾個可能會用到的:

ST_Area(Poly|mPoly) :返回雙精度的面積或面積的和

'ST_Centroid(Poly|mPoly)':返回數(shù)學(xué)上的中心點

ST_ExteriorRing(Poly) :返回外接圓

參見

ST_Buffer說明

不再列舉,主要有:ST_Buffer(不懂干啥用),ST_ConvexHull(geom)凸包,ST_Dfference(g1,g2)比較差異,ST_Intersecton(g1,g2)交叉點,ST_SymDifference(g1,g2)對稱差分,ST_Union(g1,g2)連接、合并等。

檢查geometry Objects之間的空間關(guān)系的方法。

參見

計算兩個Object之間的空間關(guān)系的函數(shù),有兩個間距離、相交、不相交,包含、相等、相切、重疊、接觸、在內(nèi)等等空間關(guān)系。下面列舉幾個可能會常用的方法:

ST_Contains(g1,g2) :g1是否完全包含g2

ST_Within(g1,g2) :g1是否包含于g2中

ST_Distance(g1,g2) :返回g1和g2之間的距離,已坐標單位計算的

ST_Equals(g1,g2) :返回g1和g2是否相等

參見

MBRContains(g1,g2) :g1的mbr是否包含g2的mbr

MBRWithin(g1,g2) :g1的mbr是否在g2的mbr內(nèi)

MBRCoveredBy(g1,g2) :g1的mbr是否被g2的mbr覆蓋

MBRCovers(g1,g2) :g1的mbr是否覆蓋g2的mbr

MBRDisjoint(g1,g2) :g1的mbr,g2的mbr是否不相交

MBRIntersects(g1,g2) :g1mbr,g2mbr是否相交

MBREqual(g1,g2) :g1的mbr,g2的mbr的外接是否相等

MBREquals(g1,g2) :g1的mbr,g2的mbr的外接是否相等

MBROverlaps(g1,g2) :g1mbr、g2mbr

其他函數(shù)請參看原文

GeoHash介紹

GeoHash Wiki百科

MySQL中自帶函數(shù) st_geohash(longtude,latitude,max_length) 或 st_geohash(point, max_length) 即可生成某一點的geohash值。

返回一個geohash字符串中的latitude或longitude

返回一個geohash解析出的point數(shù)據(jù)

官方文檔

通過geometry生成一個GeoJSON Object, select st_asgeojson(geometry,max_length,options);

通過GeoJSON生成GeoMetry對象。

ST_GeomFromGeoJSON(jsonstring, [options [, srid]])

具體使用方法參見官方文檔

官方文檔

MySQL中提供的方便空間運算的函數(shù)們

select ST_Distance_Spher(geomPoint1,geomPoint2 [, radius]);

此方法用于計算兩點或多個點之間的地球上的距離(是地球球面距離而不是直線距離),返回單位為米,

select ST_IsValid(ST_GeomFromText('LINESTRING(0 0,1 1)'))

判斷入?yún)⑹欠袷欠系乩砦恢妹枋龅母袷?。返?(符合)或者0(不符);

例如:

返回0:

select st_isvalid(st_geomfromtext('linestring(0 0, -0.00 0, 0.0 0)')

返回1:

select st_isvalid(st_geomfromtext('linestring(0 0,1 1)')

select st_astext(st_makeenvelope(pt1, pt2));

返回兩點構(gòu)成的包絡(luò)。(此計算是基于笛卡爾坐標系而非球面)

例如:

SELECT ST_AsText ( st_makeenvelope ( st_geomfromtext ( 'point(0 0)' ), st_geomfromtext ( 'point(1 1)' ) ) );

返回結(jié)果:

POLYGON((0 0,1 0,1 1,0 1,0 0))

效果說明

JS抽稀算法

select st_simplify(geometry, max_distance);

用道格拉斯-普克算法(抽稀函數(shù))簡化geometry,并返回與原格式相同格式的結(jié)果。

例如,以下點集擬合為直線,步長0.5:

SELECT st_simplify ( st_geomfromtext ( 'LINESTRING(0 0,0 1,1 1,1 2,2 2,2 3,3 3)' ), 0.5 )

返回結(jié)果:

LINESTRING(0 0, 0 1, 1 1, 2 3, 3 3)

再如,步長1.0:

SELECT st_simplify ( st_geomfromtext ( 'LINESTRING(0 0,0 1,1 1,1 2,2 2,2 3,3 3)' ), 1.0 )

返回結(jié)果:

LINESTRING(0 0, 3 3)

SELECT ST_Validate(geometry);

驗證geometry是符合正確的地理位置信息格式。例如 Point(0 0) 是合格的; Linestring(0 0) 是非法的; Linestring(0 0, 1 1) 是合格的

了解了上述MySQL中關(guān)于集合對象的功能,下面來實踐一下

由上面geohash長度-精度對應(yīng)表可知,前6位表示±610米左右的誤差,這里先查詢前六位范圍之后再用上述方法精確篩選一次即可:

可將上述查詢方法封裝為MySQL函數(shù)方便和簡化程序調(diào)用.

該方法是運用了內(nèi)置的幾何關(guān)系運算函數(shù) ST_Contains 和 ST_MakeEnvelop 來實現(xiàn)的,0.5對應(yīng)大概500米左右的范圍,具體如下;

鏈接:

提取碼: jagn


本文題目:mysql經(jīng)緯度怎么儲存 mysql計算經(jīng)緯度之間的距離
轉(zhuǎn)載源于:http://weahome.cn/article/hpecid.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部