Heim Datenbank MySQL-Tutorial EF保存平面数据到SqlServer

EF保存平面数据到SqlServer

Jun 07, 2016 pm 03:44 PM
sqlserver 保存 公司 Vorwort 平面 数据

前言 公司开展一个项目,需要根据客户手机定位获取周围内的精准广告,具体是管理员在地图上绘制多边形的广告范围,落在范围内的客户就看到此广告。下面将我的实现方法简单叙述一下,以供有相同需求的朋友参考。 EF平面对象DbGeometry DbGeometry可以表示点、

前言

公司开展一个项目,需要根据客户手机定位获取周围内的精准广告,具体是管理员在地图上绘制多边形的广告范围,落在范围内的客户就看到此广告。下面将我的实现方法简单叙述一下,以供有相同需求的朋友参考。

EF平面对象DbGeometry

DbGeometry可以表示点、线、多边形等平面对象,输入对象可以是WKT(Well-known text),我们可以把百度地图上的polygon对象的点转换为多边形的wkt描述,再转为DbGeometry进行保存。

EF保存平面数据到SqlServerEF保存平面数据到SqlServer

    <span>///</span> <span><summary></summary></span>
        <span>///</span><span> 从多点数据生成多边形
        </span><span>///</span> <span></span>
        <span>///</span> <span><param name="pointsJson"></span><span>百度地图多边形的点集</span><span></span>
        <span>public</span> <span>static</span> DbGeometry PolygonFromPointsJson(<span>string</span><span> pointsJson)
        {
            </span><span>var</span> points = JsonSerializer.ToEntity<list>><span>(pointsJson);
            </span><span>if</span> (points.First().GetHashCode() !=<span> points.Last().GetHashCode())
            {
                points.Add(points.First());
            }

            </span><span>var</span> closePoints = ((IEnumerable<lnglat>)points).Select(item => <span>string</span>.Format(<span>"</span><span>{0} {1}</span><span>"</span><span>, item.Lng, item.Lat));
            </span><span>var</span> wkt = <span>"</span><span>POLYGON((</span><span>"</span> + <span>string</span>.Join(<span>"</span><span>,</span><span>"</span>, closePoints) + <span>"</span><span>))</span><span>"</span><span>;
            </span><span>return</span><span> DbGeometry.PolygonFromText(wkt, SYSTEM_ID);
        }</span></lnglat></list>
Nach dem Login kopieren
View Code

广告实体里用DbGeometry类型记录多边形范围

EF保存平面数据到SqlServerEF保存平面数据到SqlServer

 <span>///</span> <span><summary></summary></span>
    <span>///</span><span> 广告范围表
    </span><span>///</span> <span></span>
<span>    [Serializable]
    </span><span>public</span> <span>class</span><span> AdvRange : Entity
    {
        </span><span>///</span> <span><summary></summary></span>
        <span>///</span><span> 广告范围名
        </span><span>///</span> <span></span>
<span>        [Required]
        [Length(</span><span>20</span><span>)]
        </span><span>public</span> <span>string</span> Name { <span>get</span>; <span>set</span><span>; }

        </span><span>///</span> <span><summary></summary></span>
        <span>///</span><span> 所属城市标识ID
        </span><span>///</span> <span></span>
        <span>public</span> Guid CityId { <span>get</span>; <span>set</span><span>; }

        </span><span>///</span> <span><summary></summary></span>
        <span>///</span><span> 多边形
     </span><span>///</span> <span></span> 
        <span>public</span> DbGeometry Polygon { <span>get</span>; <span>set</span><span>; }
    }</span>
Nach dem Login kopieren
View Code

从DbGeometry对象获取多边形的点

DbGeometry对象的WellKnownValue属性的可以获取WKT文本,目前我没有找到相关工具转WKT转为Json,所以用正则表达式获取也能满足需要,然后将结果转换为json就可以放到地图上进行展示了。

EF保存平面数据到SqlServerEF保存平面数据到SqlServer

 <span>///</span> <span><summary></summary></span>
        <span>///</span><span> 获取多边形的点
        </span><span>///</span> <span></span>
        <span>///</span> <span><returns></returns></span>
        <span>public</span> <span>static</span> List<lnglat> GetPolygonPoints(<span>this</span><span> DbGeometry geometry)
        {
            </span><span>var</span> list = <span>new</span> List<lnglat><span>();
            </span><span>var</span> points = geometry.WellKnownValue.WellKnownText.Matches(<span>@"</span><span>-?[1-9]\d*\.\d*|-?0\.\d*[1-9]\d*</span><span>"</span>).Select(item => <span>decimal</span><span>.Parse(item)).ToArray();
            </span><span>for</span> (<span>var</span> i = <span>0</span>; i 2<span>)
            {
                list.Add(</span><span>new</span> LngLat { Lng = points[i], Lat = points[i + <span>1</span><span>] });
            }
            </span><span>if</span> (list.First().GetHashCode() ==<span> list.Last().GetHashCode())
            {
                list.RemoveAt(list.Count </span>- <span>1</span><span>);
            }
            </span><span>return</span><span> list;
        }</span></lnglat></lnglat>
Nach dem Login kopieren
View Code


广告范围是否包含客户位置的点

 DbGeometry有很多方法和属性,EF可以将其翻译到对应的sql语句,其中Polygon.Intersects(point)可以判断点是否在多边形内。

 

效果图(中心的红标注为多边形的重心)

 EF保存平面数据到SqlServer

 

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Wie man alles in Myrise freischaltet
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

So lösen Sie das Problem, dass das genannte Objekt bereits in der SQLServer-Datenbank vorhanden ist So lösen Sie das Problem, dass das genannte Objekt bereits in der SQLServer-Datenbank vorhanden ist Apr 05, 2024 pm 09:42 PM

Für Objekte mit demselben Namen, die bereits in der SQL Server-Datenbank vorhanden sind, müssen folgende Schritte ausgeführt werden: Bestätigen Sie den Objekttyp (Tabelle, Ansicht, gespeicherte Prozedur). Mit IF NOT EXISTS kann die Erstellung übersprungen werden, wenn das Objekt leer ist. Wenn das Objekt Daten enthält, verwenden Sie einen anderen Namen oder ändern Sie die Struktur. Verwenden Sie DROP, um vorhandene Objekte zu löschen (Vorsicht, Sicherung empfohlen). Suchen Sie nach Schemaänderungen, um sicherzustellen, dass keine Verweise auf gelöschte oder umbenannte Objekte vorhanden sind.

So importieren Sie eine MDF-Datei in SQL Server So importieren Sie eine MDF-Datei in SQL Server Apr 08, 2024 am 11:41 AM

Die Importschritte sind wie folgt: Kopieren Sie die MDF-Datei in das Datenverzeichnis von SQL Server (normalerweise C:\Programme\Microsoft SQL Server\MSSQL\DATA). Öffnen Sie in SQL Server Management Studio (SSMS) die Datenbank und wählen Sie Anhängen aus. Klicken Sie auf die Schaltfläche „Hinzufügen“ und wählen Sie die MDF-Datei aus. Bestätigen Sie den Datenbanknamen und klicken Sie auf die Schaltfläche OK.

Was tun, wenn der SQLServer-Dienst nicht gestartet werden kann? Was tun, wenn der SQLServer-Dienst nicht gestartet werden kann? Apr 05, 2024 pm 10:00 PM

Wenn der SQL Server-Dienst nicht gestartet werden kann, können Sie die folgenden Schritte beheben: Überprüfen Sie das Fehlerprotokoll, um die Grundursache zu ermitteln. Stellen Sie sicher, dass das Dienstkonto über die Berechtigung zum Starten des Dienstes verfügt. Überprüfen Sie, ob Abhängigkeitsdienste ausgeführt werden. Deaktivieren Sie die Antivirensoftware. Reparieren Sie die SQL Server-Installation. Wenn die Reparatur nicht funktioniert, installieren Sie SQL Server neu.

So überprüfen Sie die SQLServer-Portnummer So überprüfen Sie die SQLServer-Portnummer Apr 05, 2024 pm 09:57 PM

So zeigen Sie die SQL Server-Portnummer an: Öffnen Sie SSMS und stellen Sie eine Verbindung zum Server her. Suchen Sie den Servernamen im Objekt-Explorer, klicken Sie mit der rechten Maustaste darauf und wählen Sie Eigenschaften. Sehen Sie sich auf der Registerkarte „Verbindung“ das Feld „TCP-Port“ an.

Wo ist die SQLServer-Datenbank? Wo ist die SQLServer-Datenbank? Apr 05, 2024 pm 08:21 PM

SQL Server-Datenbankdateien werden normalerweise am folgenden Standardspeicherort gespeichert: Windows: C:\Programme\Microsoft SQL Server\MSSQL\DATALinux: /var/opt/mssql/data Der Speicherort der Datenbankdatei kann durch Ändern des Datenbankdateipfads angepasst werden Einstellung.

So stellen Sie eine versehentlich gelöschte Datenbank in SQL Server wieder her So stellen Sie eine versehentlich gelöschte Datenbank in SQL Server wieder her Apr 05, 2024 pm 10:39 PM

Wenn Sie eine SQL Server-Datenbank versehentlich löschen, können Sie die Datenbankaktivität stoppen; Party-Tools. Bitte sichern Sie Ihre Datenbank regelmäßig und aktivieren Sie die Transaktionsprotokollierung, um Datenverlust zu verhindern.

Langsame Internetgeschwindigkeiten für Mobilfunkdaten auf dem iPhone: Korrekturen Langsame Internetgeschwindigkeiten für Mobilfunkdaten auf dem iPhone: Korrekturen May 03, 2024 pm 09:01 PM

Stehen Sie vor einer Verzögerung oder einer langsamen mobilen Datenverbindung auf dem iPhone? Normalerweise hängt die Stärke des Mobilfunk-Internets auf Ihrem Telefon von mehreren Faktoren ab, wie z. B. der Region, dem Mobilfunknetztyp, dem Roaming-Typ usw. Es gibt einige Dinge, die Sie tun können, um eine schnellere und zuverlässigere Mobilfunk-Internetverbindung zu erhalten. Fix 1 – Neustart des iPhone erzwingen Manchmal werden durch einen erzwungenen Neustart Ihres Geräts viele Dinge zurückgesetzt, einschließlich der Mobilfunkverbindung. Schritt 1 – Drücken Sie einfach einmal die Lauter-Taste und lassen Sie sie los. Drücken Sie anschließend die Leiser-Taste und lassen Sie sie wieder los. Schritt 2 – Der nächste Teil des Prozesses besteht darin, die Taste auf der rechten Seite gedrückt zu halten. Lassen Sie das iPhone den Neustart abschließen. Aktivieren Sie Mobilfunkdaten und überprüfen Sie die Netzwerkgeschwindigkeit. Überprüfen Sie es erneut. Fix 2 – Datenmodus ändern 5G bietet zwar bessere Netzwerkgeschwindigkeiten, funktioniert jedoch besser, wenn das Signal schwächer ist

Wie lösche ich SQL Server, wenn die Installation fehlschlägt? Wie lösche ich SQL Server, wenn die Installation fehlschlägt? Apr 05, 2024 pm 11:27 PM

Wenn die SQL Server-Installation fehlschlägt, können Sie sie mit den folgenden Schritten bereinigen: Deinstallieren Sie SQL Server. Löschen Sie Registrierungsschlüssel. Löschen Sie Dateien und Ordner. Starten Sie den Computer neu

See all articles