أكثر

كيف تضيف خريطة طبوغرافية إلى ملف شكل؟

كيف تضيف خريطة طبوغرافية إلى ملف شكل؟


أتساءل كيف يمكن إضافة هذه المعلومات الطبوغرافية (الارتفاع) إلى خريطة جزيرة سانتا كروز وكل جزيرة غالاباغوس الموجودة لدي هنا.

مكتبة (rgdal) مكتبة (rgeos) مكتبة (ggplot2) مكتبة (ggthemes) مكتبة (ggsn) myGPS = data.frame (lat = c (-0.6850556، -0.6854722، -0.6857778)، lon = c (-90.22275، -90.22261، -90.22272)) coord.deg = فئة myGPS (تنسيق.deg) ## إحداثيات "data.frame" (coord.deg) <- ~ lon + lat class (coord.deg) ## "SpatialPointsDataFrame" ## attr (، "package") ## "sp" # هل يوجد بها نظام إسقاط / إحداثيات معين؟ proj4string (format.deg) # nope ## NA # أخبر R يدويًا ما هو نظام الإحداثيات proj4string (format.deg) <- CRS ("+ proj = longlat + ellps = WGS84 + datum = WGS84") # الآن يمكننا استخدام وظيفة spTransform لعرضها. سنقوم بمشروع # بيانات الخريطة وللنظام المرجعي الإحداثي (CRS) سنقوم # بتعيين الإسقاط من تنسيق المقاطعات. (format.deg)، proj4string (gal)) ## [1] TRUE my_pts <- SpatialPointsDataFrame (coords = coord.deg، data = data.frame (id = 1: length (format.deg))) URL <- " https://osm2.cartodb.com/api/v2/sql؟filename=public.galapagos_islands&q=select+*+from+public.galapagos_islands&format=geojson&bounds=&api_key= "fil <-" gal.json "إذا (! file.exists (fil)) download.file (URL، fil) gal <- readOGR (fil، "OGRGeoJSON") gal <- gSimplify (gUnaryUnion (spTransform (gal، CRS ("+ init = epsg: 31983"))، id = NULL )، tol = 0.001) gal_map <- fortify (gal) rand_pts <- spTransform (my_pts، CRS ("+ init = epsg: 31983")) # ggplot لا يمكنه التعامل مع SpatialPointsDataFrame حتى نتمكن من التحويل مرة أخرى إلى البيانات. الإطار my_pts <- data.frame (my_pts) my_pts.final = my_pts [، 2: 3] # نحن لا نتعامل مع خطوط الطول / العرض ولكن مع x / y # هذا ليس ضروريًا sary ولكن من أجل الوضوح ، قم بتغيير أسماء المتغيرات (my_pts.final) [names (my_pts.final) == "lat"] <- "y" names (my_pts.final) [names (my_pts.final) == "lon"] <- "x" gg <- ggplot () gg <- gg + geom_map (map = gal_map، data = gal_map، aes (x = long، y = lat، map_id = id)، color = "black"، fill = " #FFFFFF "، الحجم = .5) gg <- gg + Coord_equal () gg <- gg + ggsn ::: scalebar (gal_map، dist = 50، location =" bottomleft "، st.size = 5) gg <- gg + theme_map () gg <- gg + geom_point (data = my_pts.final، aes (x = x، y = y)، color = "red") gg

هل لديك أي فكرة؟ هل لديك حزمة في R تفعل هذا؟

لقد أضفت هذا:

topo <- readOGR ("public.geojson.json"، layer = "OGRGeoJSON") topo <- spTransform (topo، CRS ("+ init = epsg: 31983")) gg + geom_map (map = topo_map، data = topo_map، aes (map_id = id))

لكنه ينشئ خريطة ذات شكل أسود ...


الخريطة العلوية الخاصة بك هي SpatialLinesDataframe.خريطة الموقعيستخدم للمضلعات. أقترح عليك استخدامgeom_pathعلى النحو التالي. يربط الملاحظات بالترتيب الأصلي. (geom_lineسوف تأمر بقيمة x ، والتي لا تريدها أيضًا).

topo <- readOGR ("public.geojson.json"، layer = "OGRGeoJSON") topo <- spTransform (topo، CRS ("+ init = epsg: 31983")) class (topo) # [1] "SpatialLinesDataFrame" topo_map <- fortify (topo) # إضافة السمات مرة أخرى إلى مكتبة (plyr) topo_map <- انضم (topo_map، topo @ data، by = "id") names (topo_map) # [1] "long" "lat" "order" "piece" "group" # [6] "id" "height" "cartodb_id" "created_at" "updated_at" ggplot () + geom_path (data = topo_map ، aes (long ، lat ، group = group ، color = height) ، الحجم = 0.1) + scale_colour_gradient (منخفض = "أخضر" ، مرتفع = "بني") + تنسيق_المساواة ()


شاهد الفيديو: 2- طرق ادخال خريطة على شكل صورة الى برنامج ArcGIS